代码
我编写以下代码并将其另存为test.js:
var foo = 'I am local'; global.foo = 'I am global'; function print () { console.log(this.foo); }; print(); console.log (this.foo);
然后,我使用命令在终端中运行它,node test.js并返回:
node test.js
I am global undefined
问题
为什么不返回:
I am global I am global
?
在Node模块内部,this从设计上讲是指模块的exports对象:
this
exports
console.log(this === exports); // true
使console.log(this.foo)等于console.log(exports.foo)。
console.log(this.foo)
console.log(exports.foo)
换句话说,既不this引用全局对象,也不局部变量神奇地成为的属性exports。
由于exports.foo不存在,您得到了undefined。
exports.foo
undefined