森林海
改这样你就明白了function fn1(){ for(var i=0;i <4; i++){ var tc = setTimeout(function(i){
console.log(i,' tc:',tc);
clearTimeout(tc);
},10,i) console.log('i:',i,' tc:',tc);
}
}
fn1();/* 输出大概是这个样子
i: 0 tc: 14609
i: 1 tc: 14610
i: 2 tc: 14611
i: 3 tc: 14612
0 " tc:" 14612
1 " tc:" 14612
2 " tc:" 14612
*/你会发现 clearTimeout 的参数值没有变化, var 做用域的问题如果你把 var tc = 改成 let tc = 就符合正常思维了