vue中for循環(huán)作用域問題處理方式
最近在一個需求開發(fā)中,遇到作用域問題導致了瘋狂報錯,需求是需要在一個數組中找到typeName為生活權益N選1的對象,將其中resourceList中所有對象的expenseId拼接起來作為入參進行接口調用,如果調用返回成功則設置該對象的isReceive為0
rightsList列表格式:
"rightsList": [
{
"typeName": "互聯網權益N選1",
"isReceive": '1',
"resourceList": [
{
"expenseId": "ZY",
},
{
"expenseId": "ZY",
}
]
},
{
"typeName": "生活權益N選1",
"isReceive": '1',
"resourceList": [
{
"expenseId": "ZY",
},
{
"expenseId": "ZY",
}
]
}
]

這里由于需要遍歷查找typeName,并為當前對象的isReceive賦值,所有將接口調用寫在了for循環(huán)中,當接口調用成功將值賦給了this.rightList[i],但運行后一直報錯沒有isReceive的屬性

問題
由于這里使用的var初始化i變量,并沒有塊作用域,使用for循環(huán)進行i的遞增,而接口回調是異步操作,當接口調用完成后對this.rightList[i]進行賦值時,i的值已經遞增到了this.rightList.length,所以取不到isReceive屬性
解決
1.不在循環(huán)中執(zhí)行接口調用
循環(huán)查出typeName為“生活權益N選1”的下標值,在接口調用完成后直接賦值(已實踐)

2.不使用var
使用let關鍵字,let作為es6的方法有塊作用域
總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Vue?中ref()和?reactive()響應式數據的使用方法
article介紹Vue3中ref()和reactive()函數的使用方法,ref()用于創(chuàng)建基本數據類型的響應式引用,reactive()用于創(chuàng)建響應式對象,本文介紹Vue中ref()和reactive()響應式數據的使用方法,感興趣的朋友一起看看吧2025-01-01

