示例#1
0
文件: Operators.cs 项目: jlarsson/Yes
 public static IJsValue ArithEval(IEnvironment environment, IJsValue lhs, IJsValue rhs,
                                  Func<double, double, double> mathOperator)
 {
     /*
     var l = lhs.ToNumber();
     if (double.IsNaN(l) || double.IsInfinity(l))
     {
         return environment.CreateNumber(double.NaN);
     }
     var r = rhs.ToNumber();
     if (double.IsNaN(r) || double.IsInfinity(r))
     {
         return environment.CreateNumber(double.NaN);
     }
     return environment.CreateNumber(mathOperator(l, r));
      */
     var v = mathOperator(lhs.ToNumber(), rhs.ToNumber());
     return environment.CreateNumber(double.IsInfinity(v) ? double.NaN : v);
 }
示例#2
0
文件: Operators.cs 项目: jlarsson/Yes
 public static IJsValue RelationalEval(IEnvironment environment, IJsValue lhs, IJsValue rhs,
                                       Func<double, double, bool> relationalOperator,
                                       Func<string, string, bool> stringRelationalOperator)
 {
     if ((lhs.ToPrimitive() is string) || (rhs.ToPrimitive() is string))
     {
         return environment.CreateBool(stringRelationalOperator(lhs.ToString(), rhs.ToString()));
     }
     var ln = lhs.ToNumber();
     if (double.IsNaN(ln))
     {
         return JsUndefined.Value;
     }
     var rn = rhs.ToNumber();
     if (double.IsNaN(rn))
     {
         return JsUndefined.Value;
     }
     return environment.CreateBool(relationalOperator(ln, rn));
 }
示例#3
0
文件: Operators.cs 项目: jlarsson/Yes
 public static IJsValue Neg(IEnvironment environment, IJsValue value)
 {
     return environment.CreateNumber(-value.ToNumber());
 }