我的問題基本上是這一個的擴展: var functionName = function() {} vs function functionName() {}。 我已閱讀所有答案,但我認爲我仍然錯過了這個問題的答案:Javascript:函數聲明類型對於setInterval和onComplete非常重要?
爲什麼函數聲明的類型對jQuery的onComplete事件和本機setInterval方法很重要?而且,爲什麼它們對於這些而言很重要,但對於普通的addEventListener來說卻不重要?
用的onComplete事件實例(假設blinkOn()
叫):
//like this the onComplete event works normally and the functions call eachother
function blinkOn() { $blink.fadeIn(500, blinkOff); }
function blinkOff() { $blink.fadeOut(500, blinkOn); }
//like this blinkOff won't be called after the fadeIn
function blinkOn() { $blink.fadeIn(500, blinkOff); }
var blinkOff = function() { $blink.fadeOut(500, blinkOn); };
例在使用setInterval:
//works fine
var timer = setInterval(onTimer, 700);
function onTimer() { ... }
//won't work
var timer = setInterval(onTimer, 700);
var onTimer = function() { ... }
我想知道的原因是因爲我想在我的代碼的一致性。如果唯一的方法是使用function a() { ... }
,那沒問題。但我認爲var a = function() { ... }
在定義範圍中更清晰。我真的很好奇。
你在另一個函數中定義了'var onTimer'函數,還是在全局範圍內? – SexyBeast
它與jQuery,native addEventListener或setInterval無關 - 所有工作都一樣。 – Bergi