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