任何人都可以解釋一下爲什麼執行JavaScript的Java代碼爲什麼會在這裏返回「Smith」?試圖瞭解JavaScript eval的輸出嗎?String解析
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。
究竟是什麼問題? 「Smith」的返回值是我期望從JS獲得的。 – broofa
這個問題還不清楚。你有2個相同的JS片段,你說他們都返回相同的值。有什麼問題? –
@broofa&Alex - 在JS代碼中沒有問題,但我沒有在eval中添加任何return語句,那麼爲什麼eval會返回「Smith」。如果我在eval中添加return語句,爲什麼它不起作用? http://jsfiddle.net/hs2501/xaJg4/2/ – Hemant