在函数内执行 addEventListener()

Execute addEventListener() inside a function

我想要的: 在滚动时向 window 添加一个事件侦听器, 但仅当某个函数被触发时 .我希望它的工作方式是:

  1. 执行foo()
  2. 在所述函数内,window.addEventListener("scroll", bar());
  3. 然后,然后, 会在每次滚动时执行 bar()(直到我决定在其他地方 removeEventListener())。

发生了什么: bar() 只执行一次 - 我想是在 foo() 的生命周期内。

一个解决方法

  1. 在函数外添加事件监听器(全局),
  2. bar()中的代码封装在if (some_boolean === true) {,
  3. foo() 结束之前将我的 some_boolean 变量(全局声明)设置为 true。

这样,我得到了我需要的滚动功能,但是现在 bar() 并且它的布尔检查在每次滚动[=47 时执行=],在完全没有必要的时候。

问题:如何添加事件处理程序以便它有效地运行 bar()?

bar() 似乎被调用,未在 window.addEventListener("scroll", bar()); 处引用。尝试引用 bar 作为处理程序以在 scroll 事件发生时调用

window.addEventListener("scroll", bar);