3 回答

TA貢獻(xiàn)1803條經(jīng)驗 獲得超6個贊
myFunction
是一個功能
myFunction()
調(diào)用函數(shù)并生成函數(shù)返回的任何值。
setTimeout的目的是在經(jīng)過一段時間后運行代碼。你需要把它傳遞給setTimeout的,將執(zhí)行之前剛剛函數(shù)傳遞給它(這樣的setTimeout本身可以調(diào)用函數(shù)在適當(dāng)?shù)臅r候),因為如果你調(diào)用的函數(shù)(用括號)現(xiàn)在,而不是1秒后,。

TA貢獻(xiàn)1719條經(jīng)驗 獲得超6個贊
該setTimeout
功能需要一個函數(shù)引用*作為參數(shù):引用變量,并且沒有括號。
函數(shù)調(diào)用需要括號(即使函數(shù)不帶參數(shù))。
Nutshell: myFunction
是對函數(shù)的引用。myFunction()
執(zhí)行函數(shù),并在表達(dá)式中,將“等于”函數(shù)的返回值(或者undefined
如果沒有返回任何內(nèi)容)。
深入研究:有些情況setTimeout(myFunction(), 1000)
可能有意義,比如它myFunction()
本身是否會返回一個函數(shù)。例如:
var myFunction = function() { return function() { alert("ohai"); };};
匿名函數(shù)(包含單個
return
語句)立即執(zhí)行。該函數(shù)的返回值本身就是一個包含的函數(shù)
alert
。
所以:
myFunction
alone是對函數(shù)的引用(恰好返回函數(shù))。myFunction()
將執(zhí)行。它評估為適合的函數(shù)引用setTimeout()
。
最后:
setTimeout(myFunction(), 1000);
這會myFunction()
在一秒鐘內(nèi)調(diào)用返回值。一秒鐘之后,彈出警報。
*或者要評估的字符串,但首選參考。

TA貢獻(xiàn)1735條經(jīng)驗 獲得超5個贊
當(dāng)你使用括號時,它會說'現(xiàn)在調(diào)用這個函數(shù)'。所以如果你說setTimeout(myFunction(),1000);
,它將使用函數(shù)的返回值作為超時的回調(diào)。如果函數(shù)的返回值本身不是函數(shù),則會出現(xiàn)錯誤,因為它會嘗試執(zhí)行超時后不可執(zhí)行的內(nèi)容(字符串,數(shù)字,未定義等)。
添加回答
舉報