这个在全球范围内和内部的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();