【问题标题】:The containing arrow function captures the global value of 'this'包含箭头函数捕获“this”的全局值
【发布时间】:2020-02-20 05:44:45
【问题描述】:

这是我的代码

import {EventEmitter} from 'events';
var emt = new EventEmitter();

emt.on('myEvent', () => {
    console.log('Arrow function: ')
    console.log(this)
});

emt.emit('myEvent');

console.log(this) 行中我得到错误。

包含箭头函数捕获 'this' 的全局值。

是什么原因?如何解决?

【问题讨论】:

  • 答案是在这种情况下不要使用箭头函数。也很好奇为什么当这段代码中没有打字稿时你用打字稿标记这个?
  • @DanStarns 因为这个打字稿会引发错误

标签: node.js typescript


【解决方案1】:

是什么原因?

与常规函数声明不同,箭头函数不会重新定义this。通常,这是一个巨大的便利。

在您的情况下,this 仅表示全局范围,因为没有其他上下文。如果您的函数在另一个闭包中,this 将引用它而不是全局。

如何解决?

您的意思是在这里使用this 吗?如果是这样,请使用 window 或您真正想要的任何内容。

【讨论】:

  • “箭头函数,与常规函数声明不同,不要重新定义它。”谢谢你,我正在寻找这个简单的短语。
猜你喜欢
  • 2019-06-08
  • 2019-06-24
  • 2019-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-19
  • 2021-04-22
  • 1970-01-01
相关资源
最近更新 更多