节点shell中定义的'this'是什么?

时间:2017-08-19 13:44:55

标签: javascript node.js this

这是我在名为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是什么?

1 个答案:

答案 0 :(得分:-3)

在节点shell上,this关键字指向global。因此:

node
> this === global
true

在foo里面,这指向文件包。在github上免费查看一本书You Don't Know Js!它解释了这个关键字是如何工作的,并揭穿了许多错误观念。