Javascript 使用带有事件处理程序的箭头函数和event.target来获取作用域,而不是普通函数和this关键字?
我的首选是在编写JS时使用箭头函数 我阅读了许多文章,其中描述了何时不使用箭头函数,包括StackOverflow上回答的一个问题: 所有这些文章都指出,在使用EventHandler时不应使用箭头函数,因为Javascript 使用带有事件处理程序的箭头函数和event.target来获取作用域,而不是普通函数和this关键字?,javascript,ecmascript-6,arrow-functions,Javascript,Ecmascript 6,Arrow Functions,我的首选是在编写JS时使用箭头函数 我阅读了许多文章,其中描述了何时不使用箭头函数,包括StackOverflow上回答的一个问题: 所有这些文章都指出,在使用EventHandler时不应使用箭头函数,因为this的作用域设置为全局,而不是单击的对象。但是,我一直在使用箭头函数和事件处理程序,如下所示: button.addEventListener('click', (event) => { const target = event.target } event
this
的作用域设置为全局,而不是单击的对象。但是,我一直在使用箭头函数和事件处理程序,如下所示:
button.addEventListener('click', (event) => {
const target = event.target
}
event.target
提供了使用箭头函数时的事件范围。然而,有这么多文章建议不要在事件处理程序中使用箭头函数,我想知道我的方法是否有我可能忽略的缺点
然而,有这么多文章建议不要在事件处理程序中使用箭头函数,我想知道我的方法是否有我可能忽略的缺点
看起来你没有错过任何东西。您没有使用
你是
- 不使用此
- 不使用
参数
- 不使用
调用函数(浏览器也不会)new
如果我没记错的话,
event.target
在旧版本的Internet Explorer(<9)中不存在(它是event.srcmelement
),但是如果您使用的是箭头函数,您可能不关心不推荐的浏览器;) 不,这很好,就像你发现上下文也在event.target上一样。或者你可以使用你有权访问的按钮变量。@Reyno请注意,如果按钮是循环中的一个变量,但现在人们还是应该使用let。