下面小編就為大家?guī)硪黄獪\析javascript異步執(zhí)行函數(shù)導(dǎo)致的變量變化問題解決思路。小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考
淺析javascript異步執(zhí)行函數(shù)導(dǎo)致的變量變化問題解決思路
for(var i=0;i<3;i++)
{
setTimeout(function(){
console.log(i)
},0);
}
控制臺輸出:
3
3
3
這是因為執(zhí)行方法的時候for循環(huán)已經(jīng)執(zhí)行完成每次執(zhí)行的時候取得都是3 而不是1-2-3這時我們可以使用立即執(zhí)行函數(shù)為每一次循環(huán)創(chuàng)建一個變量副本來供定時器調(diào)用解決這個問題
for (var i = 0; i < 3; i++) {
setTimeout(
(function () {
var _i = i;
return function () {
console.log(_i)
};
})(),
0);
}
控制臺輸出:
1
2
3
以上這篇淺析javascript異步執(zhí)行函數(shù)導(dǎo)致的變量變化問題解決思路就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考