2015-09-24 23 views
0

从标准的编程语言来,我发现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

+0

谢谢,两个答案都添加到解释中。 – RaelB

1

那么为什么不直接引用该函数直接?如:

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

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

相关问题