来自标准编程语言,我发现这个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);
我也不明白,上面实际上只运行一次。这是为什么? (如果不正确那么它根本不起作用)
由于
答案 0 :(得分:2)
要传递引用,只需使用不带()
的函数名称。
var myVar=setInterval(myTimer, 1000);
当使用()
时,调用该函数并将返回的值传递给setInterval
答案 1 :(得分:1)
那为什么不直接参考这个功能呢?如:
var myVar=setInterval(myTimer(), 1000);
因为那时调用myTimer
调用的结果。将函数传递给其他函数时,函数与其他任何值都没有区别。