gpt4 book ai didi

javascript - `Function(' return this' )` and ` function() {return this}` 有什么区别?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:54:14 25 4
gpt4 key购买 nike

在许多已编译的 Javascript 模块中,在序言的某处有一个对 Function('return this')() 的调用以获取全局对象。我在解释器环境中工作,出于安全原因,禁止使用 Function 构造函数(以及 eval)。我用 (function(){return this})() 替换了上面的代码,一切似乎都正常。

这样做安全吗?有没有失败的情况?为什么大多数编译后的 JS 模块更喜欢构造函数版本?

最佳答案

strict mode你没有得到全局对象;你得到的是 undefined:

console.log( window === function(){
return (function(){return this})();
}() ); // true

console.log( window === function(){
"use strict";
return (function(){return this})();
}() ); // false

Function 构造函数逃避了严格模式,因此无论您是否已经处于严格模式,您都会得到相同的结果:

console.log( window === function(){
return Function('return this')();
}() ); // true

console.log( window === function(){
"use strict";
return Function('return this')();
}() ); // true

关于javascript - `Function(' return this' )` and ` function() {return this}` 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49417064/

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