为什么必须在函数()中包含对函数的调用

时间:2015-09-24 11:57:00

标签: javascript

来自标准编程语言,我发现这个javascript片段很难理解:

(来自http://www.w3schools.com/js/js_timing.asp

var myVar=setInterval(function () {myTimer()}, 1000);

function myTimer() {
    var d = new Date();
    document.getElementById("demo").innerHTML = d.toLocaleTimeString();
}

为什么对myTimer()的调用进一步包含在function(){}中, 是一个函数。并不是setInterval()期待一个函数?那么为什么不直接参考这个功能呢?如:

var myVar=setInterval(myTimer(), 1000);

我也不明白,上面实际上只运行一次。这是为什么? (如果不正确那么它根本不起作用)

由于

2 个答案:

答案 0 :(得分:2)

要传递引用,只需使用不带()的函数名称。

var myVar=setInterval(myTimer, 1000);

当使用()时,调用该函数并将返回的值传递给setInterval

答案 1 :(得分:1)

  

那为什么不直接参考这个功能呢?如:

var myVar=setInterval(myTimer(), 1000);

因为那时调用myTimer调用的结果。将函数传递给其他函数时,函数与其他任何值都没有区别。