为什么“foo()”在分配给addEventListener方法时会被自动调用

时间:2014-02-23 12:55:09

标签: javascript function

function foo() {
    console.log("clicked");
}

element.addEventListener("click", foo());

为什么foo()会在脚本加载时自动调用,foo不会? 如果我需要像这样将函数传递给函数,该怎么办:

function foo(elem) {
    console.log(elem,"clicked");
}

element.addEventListener("click", foo("element"));

1 个答案:

答案 0 :(得分:2)

您需要添加该函数的引用,否则将在绑定事件处理程序时调用它。试试这个:

element.addEventListener("click", foo);

如果需要传递参数,请将其包装在匿名函数中:

element.addEventListener("click", function(){
    foo("element")
});