谁能解释一下为什么下面执行 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 的情况之一。