在https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions
的箭头函数的MDN文档中使用以下示例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
。 1}}上下文。将console.log(this)
添加到回调中似乎可以确认。
当我使用其他es6-> es5转换器时,它始终按预期工作。这是node.js中的错误吗?我错过了什么吗?
编辑:也许这就是原因? ES6 arrow function lexical this in V8
区别在于,他们正在讨论Chrome,而这个问题与Node.js有关。根据{{3}},他们有不同级别的ES6支持,即使他们都使用V8。
答案 0 :(得分:2)
似乎原因是V8尚未更新以支持词汇this
。