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

JavaScript事件监听器函数语法疑问:两种写法为何效果不同?

事件监听器传参问题解析

这俩写法的核心区别在于事件监听器需要接收的是函数引用,不是函数执行结果:

  • 第一种写法moreInfoButtonCourse1.addEventListener("click", toggleDisplay(course1Info));里,toggleDisplay(course1Info)是直接执行了这个函数,把它的返回值(如果你的toggleDisplay没写return语句,返回值就是undefined)传给了addEventListener。点击按钮时,浏览器会尝试调用这个传入的返回值(也就是undefined),自然没反应。

  • 第二种箭头函数的写法,() => { toggleDisplay(course1Info); }是创建了一个新的匿名函数,把这个函数的引用传给了事件监听器。当按钮被点击时,浏览器才会执行这个匿名函数,进而调用toggleDisplay(course1Info),这才是符合预期的触发时机。

另外还有一种替代写法,用bind来绑定参数,效果和箭头函数一致:

moreInfoButtonCourse1.addEventListener("click", toggleDisplay.bind(null, course1Info));

内容的提问来源于stack exchange,提问作者lizzie_codes

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 21:37:13