按照邏輯應該是i的輸出應該是 0,0,0,1,1,1,2,2,2但是實際情況是輸出0,1,2,2,2,2,2,2,2
這是什麼原因啊!!!!
var b=0.2;
function startjianyin(){
for(var i=0;i<3;i++){
var yin=function(){
if(b<=0.4){
b=b+0.1;
alert(i);
}else{
b=0.2;
}
setTimeout(yin, 10);
}
yin();
}
}
閉包沒做好,第一個setTimeout沒執行i就已經變為3了。。而且最後的結果應該是0 1 2 3 3 3 3.。而且死循環了。。。
你那個結構我無法理解你要干嘛,給你簡單閉包例子你自己參考。。
var b = 0.2;
function startjianyin() {
for (var i = 0; i < 3; i++) {
var yin = (function (i) {
return function () { console.log(i); }
})(i);
yin();
setTimeout(yin, 10);
}
}
startjianyin()//0 1 2 0 1 2