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

时间:2012-02-05 13:44:24

标签: javascript

这让我很困惑

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按预期显示

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

1 个答案:

答案 0 :(得分:5)

addEventListener函数作为其第二个参数。一旦调用函数,就意味着你传递了该函数的返回值,而不是函数本身。如果你想在addEventListener中使用函数调用,就像你想要的那样,你应该添加一个嵌套函数,当你调用它时会返回它。

试试这个:

var show2 = function(word){ 
                return function(){ console.log(word); }
            };
button_element.addEventListener('click', show2('wow'), false);

在上面的示例中,对addEventListener的调用将发送到内部函数,该函数将捕获其中word变量的值。