解決for循環內setInterval/setTimeout問題

錯誤示例:

for (var i = 0; i < 10; i++) {
    setInterval(function(){
        console.log(i);
    },interval);
}

setInterval是異步的,等到到達執行的時間的時候,裏面的i已經變成3了。需要通過作用域來確保變量的值是想要的值

解決辦法:

for (var i = 0; i < 10; i++) {
    (function(i1){
        setInterval(function(){
            console.log(i1);
        },interval);
    })(i);//執行傳入i, 匿名函數function的形參是i1,實參就是傳入的i
}

參考地址: https://segmentfault.com/q/1010000002932798

發佈了120 篇原創文章 · 獲贊 105 · 訪問量 38萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章