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

Arrow function context in node.js

本文关键字:函数 上下文 js node      更新时间:2024-02-26

使用MDN文档中Arrow函数的以下示例,位于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();

当我将该代码复制/粘贴到node.js 0.12 node --harmony中时,this.age++;行似乎不是指Person上下文,而是指setInterval上下文。将console.log(this)添加到回调中似乎证实了这一点。

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

编辑:也许这就是原因?V8 中的ES6箭头函数词法this

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

原因似乎是V8还没有更新到支持词法this