淺析javascript異步執(zhí)行函數(shù)導(dǎo)致的變量變化問(wèn)題解決思路

字號(hào):


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