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 を使用しなければならない状況の 1 つです。