1.第一种情况,setTimeout的第一个参数写函数名,可以正确执行,并且函数执行有延迟效果
var cards = document.getElementsByClassName('card');
for(let i=0;i<cards.length;i++){
setTimeout(show,1000*i);
}
//动画
function show(){
console.log(new Date());
}
2.第二种情况,setTimeout的第二个参数函数带参数,可以执行,但是没有延迟效果;
var cards = document.getElementsByClassName('card');
for(let i=0;i<cards.length;i++){
setTimeout(show(i),1000*i);
}
//动画
function show(i){
console.log(new Date());
}
这是为什么呢?
带参数的写成这样就会有正确的效果
setTime(function(){
show(i)
},1000*i)
求解答
你这个是把
show()
的返回值当setTimeout
的第一个参数执行setTimeout(show,1000*i,i);
第三个和之后的都是第一个参数的参数