You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

重复添加匿名箭头函数到事件处理器的绑定与触发次数疑问

重复添加匿名箭头函数到事件处理器的绑定与触发次数疑问

嘿,这个问题问得特别实在!我来给你讲明白:

每次你调用 hintCell.addEventListener("click", () => { ... }) 的时候,那个箭头函数都是一个全新的函数实例——哪怕代码写得一模一样,JavaScript每次执行这行代码都会创建一个完全独立的函数对象。

所以如果把这个事件绑定语句调用5次,就等于给hintCell的click事件绑定了5个互不相同的事件处理器。这时候你点击一下这个元素,someCode和moreCode就会被连续执行5次,因为每个绑定的函数都会被触发一次。

这里顺便提个小区别:如果换成命名函数,情况就不一样了。比如:

const handleClick = () => {
  someCode;
  moreCode;
};
// 第一次绑定
hintCell.addEventListener("click", handleClick);
// 第二次绑定同一个函数引用
hintCell.addEventListener("click", handleClick);

这种情况下,第二次调用不会新增监听器——因为JS会识别到这是同一个函数对象,重复绑定相同的监听器会被忽略。但你的匿名箭头函数每次都是新对象,所以不会有这个“自动去重”的效果。

备注:内容来源于stack exchange,提问作者Clay Nichols

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.13 19:23:07