我尝试使用简单表达式使用JInt(Javascript Interpreter for .NET):
var engineTest = new Engine ()
.SetValue ("X", 10.1)
.SetValue ("Y", 20.5)
.SetValue ("Code", "A");
var dFormula = @"if (Code === 'A'){X+Y;} if (Code === 'B'){Y-X;}";
var result = engineTest.Execute(dFormula).GetCompletionValue();
此公式结果的将是' undefined
'。如果我将dFormula
更改为
var dFormula = @"if (Code === 'A'){X+Y;}";
或
var dFormula = @"if (Code === 'A'){X+Y;} else if (Code === 'B'){Y-X;}";
结果是正确的。 JInt(2.5.0)有什么问题。
或者它可能不支持公式中的多个语句?我尝试用" {}
"支架没有结果。
答案 0 :(得分:0)
原因是: 在执行每个语句之前,JInt重置Complition值。因此,此公式仅在Code ===" B"时才有效,否则结果将被' undefined'覆盖。值。
有两种方法可以解决它:
添加到公式输出变量,如
var dFormula = @" if(Code ===' A'){RESULT = X + Y;} if(Code ===' B'){结果= YX;}&#34 ;;
答案 1 :(得分:0)
为什么不使用return:
if (Code === 'A') return X+Y;
if (Code === 'B') return Y-X;
或
return Code === 'A' ? X+Y : (Code === 'B' ? Y-X : undefined);
或使用开关
switch (Code) {
case a:
...