定時器函數(shù)為什么不加括號 go為什么不加括號
function go(){
? ?if(speed <0 && parseInt(list.style.left) >newleft || speed > 0 && parseInt(list.style.left) < newleft){
? ? ? ?list.style.left = parseInt(list.style.left) +speed + 'px';
? ? ? ?setTimeout(go,interval);
? ?}else{
? ? ? ?list.style.left = parseInt(list.style.left) + offset + 'px';
? ? ? ?if(parseInt(list.style.left) > -600){
? ? ? ? ? ?list.style.left = -3000 + 'px';
? ? ? ?}
? ? ? ?if(parseInt(list.style.left) < -3000){
? ? ? ? ? ?list.style.left = -600 + 'px';
? ? ? ?}
? ?}
}
2016-11-10
?setTimeout(go(),interval);這里的go()表示函數(shù)的直接調(diào)用,也就是在setTimeout這個函數(shù)沒有執(zhí)行的時候,go()就已經(jīng)執(zhí)行了;這樣的話當(dāng)?shù)谝淮螆?zhí)行g(shù)o()這個函數(shù),并到?setTimeout(go(),interval)這行代碼塊時,go()在setTimeout還沒執(zhí)行時,它就執(zhí)行了,這時go()再次被調(diào)用,而setTimeout沒有執(zhí)行;然后又到了?setTimeout(go(),interval)這行代碼塊,這時go()再次被調(diào)用,而setTimeout還是沒有執(zhí)行,以后一直這樣,直到滿足(speed <0 && parseInt(list.style.left) >newleft || speed > 0 && parseInt(list.style.left) < newleft)這個條件時,?list.style.left = parseInt(list.style.left) + offset + 'px';也就是圖片到達(dá)目的地。所以當(dāng)你?寫成setTimeout(go(),interval)時,你會發(fā)現(xiàn)圖片直接跳轉(zhuǎn),而沒有緩慢的動畫過程,因為setTimeout沒有執(zhí)行過,那就不會有每隔一個interval,位移發(fā)生一點(diǎn)變化直到到達(dá)目的地這回事了,而是直接到達(dá)目的地。
2016-11-10
重回答:
?setTimeout(go(),interval);這里的go()表示函數(shù)的直接調(diào)用,也就是在setTimeout這個函數(shù)沒有執(zhí)行的時候,go()就已經(jīng)執(zhí)行了;這樣的話當(dāng)?shù)谝淮螆?zhí)行g(shù)o()這個函數(shù),并到?setTimeout(go(),interval)這行代碼塊時,go()在setTimeout還沒執(zhí)行時,它就執(zhí)行了,這時go()再次被調(diào)用,這時圖片位移發(fā)生變化,由于
這個函數(shù)沒有返回值或者返回值不是可執(zhí)行的函數(shù)或者其他的代碼,所以只是圖片位移發(fā)生變化,setTimeout沒有執(zhí)行任何函數(shù)(也就是說如果這個go函數(shù)返回一個函數(shù)的話,那么setTimeout就會執(zhí)行返回那個函數(shù));
然后又到了?setTimeout(go(),interval)這行代碼塊,這時go()再次被調(diào)用,接下來情況如上次一樣;以后一直這樣,直到滿足(speed <0 && parseInt(list.style.left) >newleft || speed > 0 && parseInt(list.style.left) < newleft)這個條件時,?list.style.left = parseInt(list.style.left) + offset + 'px';也就是圖片到達(dá)目的地。所以當(dāng)你?寫成setTimeout(go(),interval)時,你會發(fā)現(xiàn)圖片直接跳轉(zhuǎn),而沒有緩慢的動畫過程,因為setTimeout沒有執(zhí)行g(shù)o這個函數(shù)過,那就不會有每隔一個interval,位移發(fā)生一點(diǎn)變化直到到達(dá)目的地這回事了,而是直接到達(dá)目的地。
2016-07-11
這樣寫setTimeout(go,interval)和這樣寫setTimeout("go()","interval()")是一樣的?!獋€人見解,僅供參考