无法在addEventListener方法的第二个参数中添加括号

mko*_*mko 1 javascript

这让我很困惑

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按照预期在控制台中按下按钮

任何人解释为什么这样做?

Dan*_*ert 5

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变量值.