0

谁能解释一下为什么下面执行 JavaScript 的 Java 代码在这里返回“Smith”?

    ScriptEngineManager manager = new ScriptEngineManager();
    ScriptEngine engine = manager.getEngineByName("js");
    String jsSnippet = "var fullName = 'Joe Smith'; fullName.substring(fullName.indexOf(' ') + 1);";
    System.out.println(engine.eval(jsSnippet));

提供与上述 Java 代码相同的输出的类似 JavaScript 代码 ( jsFiddle ) 是

var jsSnippet = "var fullName = 'Joe Smith'; fullName.substring(fullName.indexOf(' ') + 1);";
document.write(eval(jsSnippet));

PS:我知道 eval 是邪恶的,但这是我必须使用 JavaScript eval 的情况之一。

4

1 回答 1

2

eval 函数计算传递给它的最后一个表达式,并返回它的值。请参阅Mozilla 开发者网络中有关 eval 的相关部分。

于 2013-01-14T06:17:23.110 回答