0

在Java7中执行以下代码

ScriptEngine scriptEngine = new ScriptEngineManager().getEngineByName("js");
Bindings b = scriptEngine.createBindings();
b.put("x", true);
scriptEngine.eval("x&y", b);

我得到错误

sun.org.mozilla.javascript.internal.EcmaError: ReferenceError: "b" is not defined. (<Unknown Source>#1) in <Unknown Source> at line number 1

是否有一个选项可以为未定义的对象评估为 null/false,比如在 JavaScript 中?

我知道一个选项将是执行类似“this.x&this.y”而不是“x&y”的操作,但我无法控制该字符串(用户输入)。

4

1 回答 1

0

我浏览了一下 Rhino 代码,似乎没有这样的选项。

最后,我将附加“this”。在每个变量的前面。到目前为止,这不是一个理想的解决方案(我什至不会接受我自己的答案:)),但目前我没有其他解决方案。

于 2014-06-08T17:07:00.787 回答