vue中for循环作用域问题处理

最近在一个需求开发中,遇到作用域问题导致了疯狂报错,需求是需要在一个数组中找到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循环中,当接口调用成功将值赋给了this.rightList[i],但运行后一直报错没有isReceive的属性
在这里插入图片描述
问题:

由于这里使用的var初始化i变量,并没有块作用域,使用for循环进行i的递增,而接口回调是异步操作,当接口调用完成后对this.rightList[i]进行赋值时,i的值已经递增到了this.rightList.length,所以取不到isReceive属性

解决:

1、不在循环中执行接口调用,循环查出typeName为“生活权益N选1”的下标值,在接口调用完成后直接赋值(已实践)
在这里插入图片描述
2、不使用var,使用let关键字,let作为es6的方法有块作用域

个人博客地址:https://qingmuzhang.gitee.io/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值