Javascript 为什么节点中的console.log(this)返回空对象?

Javascript 为什么节点中的console.log(this)返回空对象?,javascript,node.js,Javascript,Node.js,当我在节点中运行console.log(this)时,它返回空对象 console.log(this) // return { } 但当我在诺德用生命的时候 (function printThisObject(){ console.log(this); // return the global object })(); 有人能给我解释一下吗?因为NodeJS在一个模块中运行您的代码,这个引用它为您的模块导出创建的对象(这也是它提供给您的模块变量上

当我在节点中运行console.log(this)时,它返回空对象

console.log(this)             // return { }
但当我在诺德用生命的时候

(function printThisObject(){
   console.log(this);         // return the global object
})();

有人能给我解释一下吗?

因为NodeJS在一个模块中运行您的代码,
这个
引用它为您的模块导出创建的对象(这也是它提供给您的
模块
变量上的
导出
属性)。(因为他们在中没有真正提到这一点,我怀疑使用它可能不是一个好主意——而是使用
导出
。)


但是调用IIFE的代码调用它时使用
this
引用全局对象,因为在松散(非严格)模式下,不通过对象属性调用普通函数时使用
this
设置为全局对象。(在严格模式下,
将是
未定义的

相关:注意,如果在没有模块的情况下运行,它会打印
全局
的内容。示例:
node-e'console.log(this)
@DanLowe:每天学习新东西,我没有意识到即时代码是在全局范围内运行的,在模块之外。但是你是对的,它是(因此
这个
指的是全局对象)。