这是我在名为foo.js
的文件中的脚本。
console.log(this === module.exports)
这给出了预期的输出,即true
。
$ node foo.js
true
$ node
> require('./foo')
true
{}
但是我无法理解为什么以下产生相反的输出,即false
。
$ node
> console.log(this === module.exports)
false
undefined
> .load foo.js
> console.log(this === module.exports)
false
undefined
节点shell中定义的this
是什么?
答案 0 :(得分:-3)
在节点shell上,this
关键字指向global
。因此:
node
> this === global
true
在foo里面,这指向文件包。在github上免费查看一本书You Don't Know Js!它解释了这个关键字是如何工作的,并揭穿了许多错误观念。