这让我很困惑
var show = function(){
console.log('wow');
};
var show2 = function(word){
console.log(word);
};
button_element.addEventListener('click', show2('wow'), false)
'哇'//它会立即返回字符串但按下按钮,控制台中没有任何输出,
但
button_element.addEventListener('click', show. false)
没有字符串按预期返回,然后点击控制台中的按钮wow
按预期显示
任何人解释为什么这样做?
答案 0 :(得分:5)
addEventListener
将函数作为其第二个参数。一旦调用函数,就意味着你传递了该函数的返回值,而不是函数本身。如果你想在addEventListener
中使用函数调用,就像你想要的那样,你应该添加一个嵌套函数,当你调用它时会返回它。
试试这个:
var show2 = function(word){
return function(){ console.log(word); }
};
button_element.addEventListener('click', show2('wow'), false);
在上面的示例中,对addEventListener
的调用将发送到内部函数,该函数将捕获其中word
变量的值。