2015-09-24 52 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調用的結果獲得通過。將函數傳遞給其他函數時,函數與其他任何值都沒有區別。

相關問題