gpt4 book ai didi

javascript - `new Function("在立即调用的函数中返回 this")()` 的目的是什么

转载 作者:数据小太阳 更新时间:2023-10-29 05:45:18 25 4
gpt4 key购买 nike

我正在查看 setImmediate polyfill它包含在立即调用函数中,包含以下内容:

(function (global, undefined) {
"use strict";
...
}(new Function("return this")()));

我对最后一条语句的目的和传递给函数的参数感到困惑。这段代码既可以在浏览器中运行,也可以在 Node.js 上运行,这与它有什么关系吗?你能解释一下吗?

最佳答案

代码的编写使其可以访问全局范围,无需知道包含该范围的对象是什么。例如,在浏览器中,全局范围是 window,但在其他容器中并非如此。

通过使用 Function constructor ,您可以直接访问全局范围:

Note: Functions created with the Function constructor do not create closures to their creation contexts; they always are created in the global scope. When running them, they will only be able to access their own local variables and global ones, not the ones from the scope in which the Function constructor was called. This is different from using eval with code for a function expression.

所以通过这样做:

(new Function("return this")())

您在全局范围内创建并调用一个新函数,该函数返回全局范围内的任何内容。然后立即将其作为 global 对象传递给主函数。

关于javascript - `new Function("在立即调用的函数中返回 this")()` 的目的是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29706284/

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