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

时间:2016-09-09 01:57:57

标签: node.js

在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

1 个答案:

答案 0 :(得分:1)

只有在ES6中处于严格模式时才会出现这种情况。在这种情况下,顶级'this'并不指向任何东西。没有'use strict'(在Nodejs中定义模块时隐式设置),行为将与您在Chrome中看到的相同。

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