在 Javascript 中组合 EventListener 和闭包
Combining EventListener and Closures in Javascript
我正在尝试使用闭包,以便在用户滚动 JavaScript 中的文档时调用一个函数。
因此我创建常量 scroll
并在事件 'scroll' 发生时通过 scroll()
调用内部函数。
当我尝试使用下面的代码执行此操作时,我没有收到错误消息,但由于某种原因没有调用内部函数。
const scroll = scrollEvent();
document.addEventListener("scroll", scroll());
function scrollEvent() {
debugger;
var positions = {pos1: 3, pos2: 5};
return function() {
loadContent(positions);
}
}
在此先感谢您的帮助。
您的代码几乎是正确的。但是当您创建 scroll
变量并调用 scrollEvent
时已经创建了闭包(之后 scroll
包含对返回函数的引用),因此您只需要传递 scroll
到 addEventListener
,因为它只是 returns undefined
.
另一种方法是省略scroll
变量,并在参数中调用scrollEvent
,像这样:
document.addEventListener("scroll", scrollEvent());
现在 scrollEvent
returns 用作事件侦听器的函数,并创建了闭包,当事件触发时,positions
在事件处理程序中可用。
我正在尝试使用闭包,以便在用户滚动 JavaScript 中的文档时调用一个函数。
因此我创建常量 scroll
并在事件 'scroll' 发生时通过 scroll()
调用内部函数。
当我尝试使用下面的代码执行此操作时,我没有收到错误消息,但由于某种原因没有调用内部函数。
const scroll = scrollEvent();
document.addEventListener("scroll", scroll());
function scrollEvent() {
debugger;
var positions = {pos1: 3, pos2: 5};
return function() {
loadContent(positions);
}
}
在此先感谢您的帮助。
您的代码几乎是正确的。但是当您创建 scroll
变量并调用 scrollEvent
时已经创建了闭包(之后 scroll
包含对返回函数的引用),因此您只需要传递 scroll
到 addEventListener
,因为它只是 returns undefined
.
另一种方法是省略scroll
变量,并在参数中调用scrollEvent
,像这样:
document.addEventListener("scroll", scrollEvent());
现在 scrollEvent
returns 用作事件侦听器的函数,并创建了闭包,当事件触发时,positions
在事件处理程序中可用。