4 回答

TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超4個(gè)贊
你這個(gè)是把show()
的返回值當(dāng)setTimeout
的第一個(gè)參數(shù)執(zhí)行setTimeout(show,1000*i,i);
第三個(gè)和之后的都是第一個(gè)參數(shù)的參數(shù)

TA貢獻(xiàn)1775條經(jīng)驗(yàn) 獲得超8個(gè)贊
setTimeout(show(i),1000*i);
setTimeout語句執(zhí)行前,show(i)已經(jīng)被執(zhí)行
setTimeout函數(shù)要求第一個(gè)參數(shù)為一個(gè)函數(shù)
正確的代碼:
var cards = document.getElementsByClassName('card');
for(let i=0;i<cards.length;i++){
setTimeout((function(i){
return function(){
show(i);
}
}(i)),1000*i);
}
//動(dòng)畫
function show(i){
console.log(new Date());
}

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超4個(gè)贊
樓上正解,show(i)在setTimeout語句執(zhí)行前已經(jīng)被執(zhí)行了,它已經(jīng)是一個(gè)結(jié)果了,所以setTimeout(show(i),1000i);即為setTimeout(一個(gè)結(jié)果,1000i);
自然是沒有解的,而打印出來的值其實(shí)是show(i)執(zhí)行的結(jié)果,所以自然沒有延時(shí)效果

TA貢獻(xiàn)1786條經(jīng)驗(yàn) 獲得超11個(gè)贊
settimeout(show(),i) 你這表示是執(zhí)行函數(shù).是函數(shù)自己執(zhí)行.而不是定時(shí)器去調(diào)用
settimeout(show,i) 這是調(diào)用函數(shù). 和傳參不傳參一點(diǎn)關(guān)系沒有.
settimeout(function(){
show();
})
這是創(chuàng)建個(gè)函數(shù)去調(diào)用.新創(chuàng)建的函數(shù)被定時(shí)器調(diào)用.所有也會(huì)有延遲.
這就是一個(gè)函數(shù)調(diào)用的問題.仔細(xì)思考就明白了
添加回答
舉報(bào)