程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> settimeout-JS關於for循環中定時器的問題

settimeout-JS關於for循環中定時器的問題

編輯:編程綜合問答
JS關於for循環中定時器的問題

按照邏輯應該是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
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved