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

Node.js 包含箭头的函数捕获“this”的全局值,node.js,typescript,Node.js,Typescript,这是我的密码 import {EventEmitter} from 'events'; var emt = new EventEmitter(); emt.on('myEvent', () => { console.log('Arrow function: ') console.log(this) }); emt.emit('myEvent'); 联机控制台.logthis我得到错误 包含箭头的函数捕获“this”的全局值 原因是什么?如何修复它 原因是什么 箭头函数

这是我的密码

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

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

emt.emit('myEvent');
联机控制台.logthis我得到错误

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

原因是什么?如何修复它

原因是什么


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

在您的例子中,这只是指全局范围,因为没有其他上下文。如果您的函数位于另一个闭包中,则会引用它而不是全局闭包

如何修复它

你想在这里用这个吗?如果是这样,请使用window或任何您真正想要的工具

原因是什么


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

在您的例子中,这只是指全局范围,因为没有其他上下文。如果您的函数位于另一个闭包中,则会引用它而不是全局闭包

如何修复它


你想在这里用这个吗?如果是这样,请使用window或任何您真正想要的工具。

答案是在这种情况下不要使用箭头功能。还想知道为什么在代码中没有typescript的情况下用typescript标记它?@DanStarns因为这个typescript抛出了一个错误答案是在这种情况下不要使用箭头函数。还想知道为什么在代码中没有typescript的情况下用typescript标记它?@DanStarns因为这个typescript会抛出一个errorrow函数,与常规函数声明不同,它不会重新定义。谢谢你,我一直在寻找这个简单的短语。箭头函数不同于常规函数声明,它不会重新定义。谢谢你,我在找这个简单的短语。