在node.js v6.0.0中运行此代码:
x = 3;
var foo = {
x:1,
bar: {
x: 2,
baz: function() {
console.log(this.x);
}
}
};
foo.bar.baz();
var a = foo.bar.baz;
a();
错误:
2
TypeError: Cannot read property 'x' of undefined
但是在chrome 52.0.2743.116控制台中:
2
3
答案 0 :(得分:1)
只有在ES6中处于严格模式时才会出现这种情况。在这种情况下,顶级'this'并不指向任何东西。没有'use strict'(在Nodejs中定义模块时隐式设置),行为将与您在Chrome中看到的相同。
请注意,要使代码在严格模式下工作,您需要在x = 3之前放置一个'var'。