javascript - Node.js 中的箭头函数上下文

标签 javascript node.js ecmascript-6 arrow-functions

使用箭头函数 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();

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

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

编辑:也许这就是原因? ES6 arrow function lexical this in V8

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

最佳答案

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

关于javascript - Node.js 中的箭头函数上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28638591/

相关文章:

javascript - 在 Typescript 中使用新对象更新 const 对象的所有属性

node.js - Angular 8 - 无法让 httpClient POST 与 Socket.io 一起完成其工作?

node.js - 如何仅在 Node 版本足够旧的情况下才需要包?

javascript - $apply 使用时范围未更新

reactjs - 如何动态导入图片

javascript - ES6 在当前 Promise 完成后无法返回新的 Promise

javascript - 如何在 JavaScript 或 html 中实现与 Google Chrome 的 "Empty Cache and Hard Reload"相同的功能?

javascript - 将 GET 请求中的数据附加到 div

javascript - 如何在 Angular.js 中为我的 Json 数据设置初始过滤器?

javascript - 如何使用 Babel 将所有包含的文件编译为一个?