這次帶給大家jQuery中使用for迴圈var與使用let有哪些差別,jQuery中使用for迴圈var與使用let的注意事項有哪些,下面就是實戰案例,一起來看一下。
今天在寫jQuery請求介面中發現一個問題:
在用AJAX發送請求中又嵌套了一個AJAX請求,發現在內層請求的success中對第一次success中的循環變數i 無法取得,具體程式碼如下:
$.ajax({ type: "get", url: "//////////////////////////", 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: "///////////////////////////////////", success: function (result) { console.log(rs[i]) //报错 } }) } } })
在第二次的ajax請求後的回呼函數中,rs[i]是會報錯的。
解決方案:
# 將for循環中宣告變數var i 改為let i
具體原因:
是第一次回呼函數後的for迴圈中,如果你再次發送請求,for迴圈並不會停止,即使你寫了同步請求也不行。
但是如果你在宣告for循環變數使用let後,程式碼會直到你請求完畢,回呼函數執行完畢後,再進行下一次的迴圈。
這就考慮到了一個閉包的問題,如果你寫var和let宣告的作用域不同。
let i 會以局部變數的形式傳遞
var i 會以全域變數的形式傳遞
如果要想將i 變數傳遞給下一層,要使用let 去聲明。
相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!
推薦閱讀:
以上是jQuery中使用for循環var與使用let有哪些區別的詳細內容。更多資訊請關注PHP中文網其他相關文章!