Javascript 使用带有事件处理程序的箭头函数和event.target来获取作用域,而不是普通函数和this关键字?

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

我的首选是在编写JS时使用箭头函数

我阅读了许多文章,其中描述了何时不使用箭头函数,包括StackOverflow上回答的一个问题:

  • 所有这些文章都指出,在使用EventHandler时不应使用箭头函数,因为
    this
    的作用域设置为全局,而不是单击的对象。但是,我一直在使用箭头函数和事件处理程序,如下所示:

    button.addEventListener('click', (event) => {
            const target = event.target
    }
    
    event.target
    提供了使用箭头函数时的事件范围。然而,有这么多文章建议不要在事件处理程序中使用箭头函数,我想知道我的方法是否有我可能忽略的缺点

    然而,有这么多文章建议不要在事件处理程序中使用箭头函数,我想知道我的方法是否有我可能忽略的缺点

    看起来你没有错过任何东西。您没有使用

    你是

    • 不使用此
    • 不使用
      参数
    • 不使用
      new
      调用函数(浏览器也不会)
    所以你可以选择任何一种形式



    如果我没记错的话,
    event.target
    在旧版本的Internet Explorer(<9)中不存在(它是
    event.srcmelement
    ),但是如果您使用的是箭头函数,您可能不关心不推荐的浏览器;)

    不,这很好,就像你发现上下文也在event.target上一样。或者你可以使用你有权访问的
    按钮
    变量。@Reyno请注意,如果按钮是循环中的一个变量,但现在人们还是应该使用let。