gpt4 book ai didi

javascript - 为什么 eval() 代码中的语法错误被忽略?

转载 作者:行者123 更新时间:2023-12-02 19:22:15 24 4
gpt4 key购买 nike

在函数代码中,当我这样做时:

eval( 'var default = 100;' );
alert( default );

浏览器的 JS 引擎*将在第二个语句上抛出语法错误,就像第一个语句成功执行一样。

请参阅此处: http://jsfiddle.net/4FMdy/ (打开浏览器的console查看错误日志)

但是,当我从代码中删除第二条语句时,我只有这个:

eval( 'var default = 100;' );

浏览器的 JS 引擎对该语句抛出语法错误。

请参阅此处: http://jsfiddle.net/4FMdy/1/

我不明白这个。如果第一个语句抛出语法错误(应该如此),为什么在上面的第一个示例中只有第二个语句抛出这样的错误。据我了解,如果一条语句抛出错误,则必然意味着(同一调用的)所有先前语句都成功执行。

顺便说一句,抛出语法错误是因为 default 是 JavaScript 中的保留字,因此不能用作变量名。

另外,请不要发表“评估是邪恶的”评论。我只是想了解浏览器 JS 引擎的行为。

* 我在 Firefox 和 Chrome 中进行了测试

最佳答案

只是一个假设:

脚本 block 首先将被解析,但不会执行(eval)

浏览器只检测到第2行的语法错误,并没有执行完整的脚本 block ,所以他不会确定eval()中的语法错误

当您将 2 行放入 2 个不同的脚本元素中时,您将收到两个错误:

http://jsfiddle.net/doktormolle/CfRmj/

关于javascript - 为什么 eval() 代码中的语法错误被忽略?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12407301/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com