gpt4 book ai didi

javascript - 'this' 属性在 nodeJS 上具有未定义的值

转载 作者:行者123 更新时间:2023-11-29 21:05:09 24 4
gpt4 key购买 nike

我仍在学习 JavaScript,当我试图理解 this 行为时,我有点困惑。我理解的一件事是 this 关键字实际上是指函数调用时的调用站点在哪里。我正在尝试运行下面的示例代码:

function foo() {
console.log ( this.a );
}
var a = 2;
foo();

预期结果是 2。它确实在 Chrome 的控制台上显示了 2,但是当我尝试从 NodeJS 运行它时,结果将是 undefined。我的 Node 版本是 6.10.1

在 Node 中运行的代码与浏览器的控制台相比,调用站点是否会有所不同,或者当我在 nodeJS 上运行代码时,尤其是在使用 this 关键字时,是否有任何需要我关注的地方?

最佳答案

在浏览器中,您的全局对象是 Window,“this”指的是 window 对象。在此执行上下文中创建的每个变量都附加到 Window 对象。
在 NodeJS 中,在特定执行上下文之外定义的每个变量都附加到一个“模块”上下文,该上下文被认为是您正在处理的文件,而不是 Node 使用的全局对象。

因此,在浏览器中调用你函数的对象是Window对象,在node中是Global对象。在浏览器中,您的变量“a”附加到 Windows 对象并且“this”指向它。在 Node 中,“a”附加到为导出文件而创建的模块,但“this”指向全局对象。

同时检查 this answer

关于javascript - 'this' 属性在 nodeJS 上具有未定义的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44450106/

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