jQuery中的for循環(huán)var與let的區(qū)別
今天在寫jQuery請求接口中發(fā)現(xiàn)一個(gè)問題:
在用AJAX發(fā)送請求中又嵌套了一個(gè)AJAX請求,發(fā)現(xiàn)在內(nèi)層請求的success中對第一次success中的循環(huán)變量 i 無法獲取,具體代碼如下:
$.ajax({
type: "get",
url: "http://////////////////////////",
success: function (result) {
rs = JSON.parse(result).data;
for (var i = 0; i < rs.length; i++) { //用var定義有問題
var pos_ = ""
$.ajax({
type: 'GET',
async: false,
dataType: 'jsonp',
contentType: 'application/json; charset=utf-8',
url: "http:///////////////////////////////////",
success: function (result) {
console.log(rs[i]) //報(bào)錯(cuò)
}
})
}
}
})
在第二次的ajax請求后的回調(diào)函數(shù)中,rs[i]是會(huì)報(bào)錯(cuò)的。
解決方案:
將for循環(huán)中聲明變量var i 更改為let i
具體原因:
是第一次回調(diào)函數(shù)后的for循環(huán)中,如果你再次發(fā)送請求,for循環(huán)并不會(huì)停止,即使你寫了同步請求也不行。
但是如果你在聲明for循環(huán)變量用let后,代碼會(huì)直到你請求完畢,回調(diào)函數(shù)執(zhí)行完畢后,再進(jìn)行下一次的循環(huán)。
這就考慮到了一個(gè)閉包的問題,如果你寫var和let聲明的作用域不同。
let i 會(huì)以局部變量的形式傳遞
var i 會(huì)以全局變量的形式傳遞
如果要想將 i 變量傳遞給下一層,要使用let 去聲明。
總結(jié)
以上所述是小編給大家介紹的jQuery中的for循環(huán)var與let的區(qū)別 ,希望對大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會(huì)及時(shí)回復(fù)大家的!
相關(guān)文章
select標(biāo)簽?zāi)M/美化方法采用JS插件
select標(biāo)簽的外觀問題很惱人,各個(gè)瀏覽器都不一致,單單就IE,一個(gè)版本就一個(gè)長相,還不能用CSS修飾,接下來將本人對select的美化方法共享出來,感興趣的朋友可以參考下2013-04-04
一個(gè)超簡單的jQuery回調(diào)函數(shù)例子(分享)
下面小編就為大家?guī)硪黄粋€(gè)超簡單的jQuery回調(diào)函數(shù)例子(分享) 。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-08-08
jquery 簡單圖片導(dǎo)航插件jquery.imgNav.js
前幾天某MM要偶幫忙實(shí)現(xiàn)栗子汀首頁的圖片導(dǎo)航效果,很簡單而且具有通用性的一個(gè)需求,點(diǎn)圖片A切換圖片A相關(guān)的內(nèi)容,點(diǎn)圖片B切換圖片B相關(guān)的內(nèi)容,僅此而已。2010-03-03
jQuery textarea的長度進(jìn)行驗(yàn)證
關(guān)于jQuery新的事件綁定機(jī)制on()的使用技巧

