淺析javascript異步執(zhí)行函數(shù)導(dǎo)致的變量變化問題解決思路
淺析javascript異步執(zhí)行函數(shù)導(dǎo)致的變量變化問題解決思路
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è)問題
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)致的變量變化問題解決思路就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
javascript刪除數(shù)組元素的七個(gè)方法示例
這篇文章主要給大家介紹了關(guān)于javascript刪除數(shù)組元素的七個(gè)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用javascript具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09
JS中產(chǎn)生標(biāo)識(shí)符方式的演變
本文記錄下JS中產(chǎn)生標(biāo)識(shí)符方式的演變,從ES5到ES6,ES5及其之前是一種方式,只包含兩種聲明(var/function),ES6則增加了一些產(chǎn)生標(biāo)識(shí)符的關(guān)鍵字,如 let、const、class。2015-06-06
中高級(jí)前端必須了解的JS中的內(nèi)存管理(推薦)
這篇文章主要介紹了中高級(jí)前端必須了解的JS中的內(nèi)存管理,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07
JS如何根據(jù)條件取出數(shù)組中對(duì)應(yīng)項(xiàng)
這篇文章主要介紹了JS根據(jù)條件取出數(shù)組中對(duì)應(yīng)項(xiàng),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-03-03

