这个在全球范围内和内部的function

根据MDN的这个解释 :

  • 在全球范围内, this是指全球性的客体
  • 在函数上下文中,如果函数被直接调用,则它再次引用全局对象

但是,以下是:

 var globalThis = this; function a() { console.log(typeof this); console.log(typeof globalThis); console.log('is this the global object? '+(globalThis===this)); } a(); 

…放在文件foo.js产生:

 $ nodejs foo.js object object is this the global object? false 

在Node.js中,我们在模块中编写的任何代码都将被封装在一个函数中。 在这个详细的答案中 ,你可以阅读更多关于这个。 所以, this模块的顶层将引用该函数的上下文,而不是全局对象。

实际上你可以使用global对象来引用实际的全局对象,像这样

 function a() { console.log('is this the global object? ' + (global === this)); } a();