nodejs这个点在函数中是未定义的

在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 

这只有在ES6中处于严格模式时才会发生。 在这种情况下,顶层“这个”并不指向任何东西。 如果没有“严格使用”(在Nodejs中定义模块时隐式设置),则行为将与您在Chrome中看到的相同。

请注意,为了使代码在严格模式下工作,您需要在x = 3之前放置一个“var”。