有人可以解释一下为什么这两次都不会触发“ listenerFn”
(function () {
document.querySelector("div").addEventListener("click", listenerFn);
document.querySelector("div").addEventListener("click", listenerFn);
function listenerFn() {
console.log("__testing__");
} })();
而像下面这样的东西触发两次预期:
(function () {
myFunction()
myFunction()
function myFunction() {
function listenerFn() {
console.log('My Message')
}
document.querySelector('div').addEventListener('click', listenerFn)
} })();
最佳答案
原因是,在第一种情况下,您尝试添加功能listenerFn的相同实例,在第二种情况下,您添加两个不同的实例(evenry myFunction()调用具有其自己的listnerFn()实例)。
您可以像这样更新您的第一个代码示例,它应该可以工作:
(function () {
document.querySelector("div").addEventListener("click", getListenerFn());
document.querySelector("div").addEventListener("click", getListenerFn());
function getListenerFn() {
let listenerFn = function() {
console.log("__testing__");
}
return listenerFn;
}
})();
关于javascript - JavaScript addEventListener异常,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53299407/