JInt(.NET的Javascript解释器),在公式中具有多语句

时间:2015-08-22 05:36:40

标签: jint

我尝试使用简单表达式使用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)有什么问题。 或者它可能不支持公式中的多个语句?我尝试用" {}"支架没有结果。

2 个答案:

答案 0 :(得分:0)

原因是: 在执行每个语句之前,JInt重置Complition值。因此,此公式仅在Code ===" B"时才有效,否则结果将被' undefined'覆盖。值。

有两种方法可以解决它:

  1. 合并为单个声明(使用其他)。
  2. 添加到公式输出变量,如

    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:
...