【发布时间】:2012-09-13 13:21:36
【问题描述】:
在功能代码中,当我这样做时:
eval( 'var default = 100;' );
alert( default );
浏览器的 JS 引擎* 将在 second 语句上抛出语法错误,就好像第一条语句成功执行一样。
看这里:http://jsfiddle.net/4FMdy/(打开浏览器的console查看错误日志)
但是,当我从代码中删除第二条语句时,我只有这个:
eval( 'var default = 100;' );
浏览器的 JS 引擎将对该语句抛出语法错误。
请看这里: http://jsfiddle.net/4FMdy/1/
我不明白这一点。如果第一条语句抛出语法错误(应该如此),为什么在我上面的第一个示例中只有第二条语句抛出这样的错误。据我了解,如果一个语句抛出一个错误,那必然意味着所有先前的语句(同一个调用)都成功执行了。
顺便说一句,抛出语法错误是因为default是JavaScript中的保留字,所以不能用作变量名。
另外,请不要“评估是邪恶的”。我只是想了解浏览器的 JS 引擎的行为。
* 我在 Firefox 和 Chrome 中测试过
【问题讨论】:
标签: javascript browser theory interpreter