node.js 中的箭头函数上下文

Arrow function context in node.js

使用箭头函数的 MDN 文档中的以下示例,位于 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions

function Person(){
  this.age = 0;

  setInterval(() => {
    this.age++; // |this| properly refers to the person object
  }, 1000);
}

var p = new Person();

当我 copy/paste 将代码写入 node.js 0.12 node --harmony 时,this.age++; 行似乎没有引用 Person 上下文,但是而是 setInterval 上下文。在回调中添加 console.log(this) 似乎证实了这一点。

当我使用其他 es6->es5 转译器时,它总是按预期工作。这是 node.js 中的错误吗?我错过了什么吗?

编辑:也许是这个原因?

不同的是,他们在讨论 Chrome 而这个问题是关于 Node.js。根据 http://kangax.github.io/compat-table/es6/#arrow_functions 他们有不同级别的 ES6 支持,即使他们都使用 V8。

似乎是因为 V8 尚未更新以支持词法this