淺析javascript異步執行函數導致的變量變化問題解決思路
for(var i=0;i<3;i++) { setTimeout(function(){ console.log(i) },0); } 控制台輸出: 3 3 3
這是因為執行方法的時候for循環已經執行完成每次執行的時候取得都是3 而不是1-2-3這時我們可以使用立即執行函數為每一次循環創建一個變量副本來供定時器調用解決這個問題
for (var i = 0; i < 3; i++) { setTimeout( (function () { var _i = i; return function () { console.log(_i) }; })(), 0); } 控制台輸出: 1 2 3
以上這篇淺析javascript異步執行函數導致的變量變化問題解決思路就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持。