我刚刚看到了在 NodeJS 环境中 this
关键字的奇怪行为。我正在用代码列出它们。我已经用 NodeJS v6.x
运行了这个代码,只有一个 JavaScript
文件。
当使用如下一行代码进行测试时,无论是否使用 'use strict'
语句,这都指向一个空对象 {}
。
console.log(this)
但是,当我在一个自执行函数中运行语句时,
(function(){
console.log(this);
}());
它正在打印一个非常大的对象。在我看来,这是由 NodeJS
环境创建的全局执行上下文对象。
当使用 'use strict'
语句执行上面的函数时,预计它将打印 undefined
(function(){
'use strict';
console.log(this);
}());
但是,在使用浏览器时(我只使用 Chrome
进行过测试) ,前三个示例生成了 window
对象,最后一个示例按预期生成了 undefined
。
浏览器的行为是可以理解的。但是,在 NodeJS
的情况下,它是否不创建执行上下文,直到我在函数内部进行包装?
那么,NodeJS
中的大多数代码运行时使用的是空的 全球性的 object
?