gpt4 book ai didi

javascript - 这是 Chrome 错误还是我对 "use strict"和 eval 的使用无效?

转载 作者:可可西里 更新时间:2023-11-01 02:26:07 25 4
gpt4 key购买 nike

此代码在除 Chrome 之外的所有浏览器中均会提示“ok”:

eval("var outer = 0; function test() {'use strict'; outer = 1; } test(); alert('ok');");

(在 jsfiddle 上尝试)。

我所做的只是从 'use strict' 函数中引用一个外部变量,所有这些都在 eval 上下文中。 Chrome 说

Uncaught ReferenceError: outer is not defined 

注意:我最初是在使用 devtool: 'eval' in Webpack 时遇到的.

最佳答案

为了简化问题:http://jsfiddle.net/rokkkjcs/6/

eval("var outer=0;");
function test() {'use strict'; outer = 1; }
test();
alert('ok');

解释是:

非严格代码可以使用“eval”函数将新变量添加到周围范围。在浏览器支持 native JSON 之前,“eval”通常(并且不安全地)用于从字符串构造对象。构造的对象然后成为周围范围的一部分。在严格模式下,'eval' 不能引入新变量。在严格模式下执行时,以下代码不会将“bar”变量引入周围范围。注意:如果包含'eval'的函数以严格模式执行,则'eval'函数内的代码也以严格模式执行。

更多信息:http://cjihrig.com/blog/javascripts-strict-mode-and-why-you-should-use-it/

关于javascript - 这是 Chrome 错误还是我对 "use strict"和 eval 的使用无效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25425072/

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