包含箭头函数捕获“this”的全局值

Edg*_*gar 2 node.js typescript

这是我的代码

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

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

emt.emit('myEvent');
Run Code Online (Sandbox Code Playgroud)

在线console.log(this)我收到错误。

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

是什么原因?如何修复它?

Bra*_*rad 6

是什么原因?

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

在您的情况下,this仅意味着全局范围,因为没有其他上下文。如果您的函数位于另一个闭包内,this则会引用它而不是全局函数。

如何修复它?

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