【发布时间】:2019-11-22 09:09:56
【问题描述】:
我正在尝试理解这个关键字。但问题在于节点环境。我在 Chrome 开发人员工具中得到了预期的行为,但相同的代码在节点环境中无法正常工作。
当我们在全局上下文中创建 var 时,它应该在全局(节点)或窗口(浏览器)内,但在节点环境中,它不会附加到文档。
我只是在测试一个简单的 3 行代码,它在 chrome 中运行良好。
这是针对 Node 环境的
var color = 'red';
console.log(this.color);
console.log(global.color)
这适用于运行良好的浏览器
var color = 'red';
console.log(this.color);
console.log(window.color)
对于节点环境,我收到未定义的未定义。
【问题讨论】:
-
在 Node 中,代码的作用域总是一个 module。
-
Node.js 文件被隐式包装在 IIFE 中,因此它相当于浏览器中的
(function () { var color = 'red'; console.log(window.color); })();。 -
Related。 tl;dr 不要依赖
var附加到全局命名空间。即使它有效,阅读您的代码的人也会感到困惑。
标签: javascript node.js this var