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