示例#1
0
文件: Operators.cs 项目: jlarsson/Yes
 public static IJsValue Add(IEnvironment environment, IJsValue lhs, IJsValue rhs)
 {
     if ((lhs.ToPrimitive() is string) || (rhs.ToPrimitive() is string))
     {
         return environment.CreateString(lhs.ToString() + rhs.ToString());
     }
     return ArithEval(environment, lhs, rhs, (l, r) => l + r);
 }
示例#2
0
 public override IReference GetReference(IJsValue name)
 {
     var index = name.ToArrayIndex();
     if (index.HasValue && (index >= 0))
     {
         return GetElementReference(index.Value);
     }
     return base.GetReference(name.ToString());
 }
示例#3
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));
 }
示例#4
0
 public virtual IReference GetReference(IJsValue name)
 {
     return GetReference(name.ToString());
 }