【问题标题】:ES6 arrow / function equivalency [duplicate]ES6箭头/功能等效[重复]
【发布时间】:2015-11-28 12:45:47
【问题描述】:

我只是想将我的一些代码更改为 ES6,但我遇到了一些箭头函数不起作用的代码,我不确定我是否理解原因。代码来自Hapi的一个插件,用于装饰reply接口。

ES5:

server.decorate('reply', 'test', function(schema, response) {
  return this.response(mask(schema, response));
});

ES6:

server.decorate('reply', 'test', (schema, response) => {
  return this.response(mask(schema, response));
});

E66不工作,报错:

Uncaught error: this.response is not a function

这是为什么?

【问题讨论】:

  • ES6 中的箭头函数自动将this 绑定到外部作用域,因此在这种情况下它不等效。
  • 我明白了——答案是什么?将其保留为function?
  • 是的。如果该特定功能的 this 绑定到其他东西,您无能为力。
  • 好的。发表一个答案,我会标记它。谢谢
  • this 行为的区别在于相关 MDN 页面的第一段。顺便说一句,正确的术语是“箭头函数”(不是“双箭头函数”)。

标签: javascript ecmascript-6


【解决方案1】:

在这种特殊情况下,库正在更改 thisdecorate 的回调中引用的内容。使用箭头函数(=>)时,this 等价于外部作用域的this。这意味着您基本上无法使用function

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-25
    • 2016-02-22
    • 1970-01-01
    • 2017-12-25
    • 2018-08-02
    • 2018-07-18
    • 2017-04-26
    相关资源
    最近更新 更多