js 开发进阶之 开发中容易遇到的问题

在开发android 的开发习惯,转向js 开发的时候,回遇到些代码习惯的问题,今天就遇到了一个问题

需求场景 是当我门找到满足条件的信息 我门返回 true 没找到 返回 fasle ,对于一个写android 的人来说 通常会这么写:

showGroupCommentList(responseBody) { 
       responseBody.GroupList.map((data) => {
       if (data.GroupType === 1 && data.CommentDetailList.length > 0) {
          return  true;
      } 
     });
    return false;
  }

但是在debug 过程中 发现 这个方法返回的值undefined
从java 的角度 我百思不得其解,不就是返回 对 boolean 值吗,为什么会出现问题,先说解决办法,代码应该这么写:

showGroupCommentList(responseBody) { 
   let hasGroupComment = false;
       responseBody.GroupList.map((data) => {
       if (data.GroupType === 1 && data.CommentDetailList.length > 0) {
           hasGroupComment = true;
      } 
     });
    return hasGroupComment;
  }

设置变量,在处理中赋值,为了弄明白这个问题,查了下js 语法,

 responseBody.GroupList.map((data) => {
      } 

这里的map 的方法体中,其实是回调,所以我一开始在回调中返回true or false 写法是有问题的,.

•map:和forEach非常相似,都是用来遍历数组中的每一项值的,用来遍历数组中的每一项;
•区别:map的回调函数中支持return返回值;return的是啥,相当于把数组中的这一项变为啥(并不影响原来的数组,只是相当于把原数组克隆一份,把克隆的这一份的数组中的对应项改变了);

2 在写js 的程序的时候,会犯些低级错误,
比如一下代码

getTheSameKindPeople(list) {
    if (!list) {
      return;
    }
    for (let i = 0; i < list.length; i++) {
      if (list[i].ItemType === 1) {
        this.displayCommentOrderType = list[i].ItemValue;
      }
      if (list[i].ItemType === 3) {
        this.sameKindPeopleTitle = list[i].ItemValue;
      }
      if (list[i].ItemType === 4) {
        this.sameKindPeopleUrl = list[i].ItemValue;
      }
    }

这段代码是典型的java 思想 写的代码,那么如果想当然的去写 会写成

if(list.get(i).ItemType === 1){
    this.displayCommentOrderType = list.get[i].ItemValue;
}

这样写会使程序获取的值undinefed ,避免犯这些低级错误

4 在我门开发js 的过程中 我门会像java 中的for 循环中,当满足条件 直接 break 出来,其实这种写法看似简单 但是对于初接触 js 的人来说容易犯错
上面体到 不能用 forEach 或者 forMap

 for (const data of htlBaseInfo.RoomList) {
        if (data.RoomId === roomId || data.RoomName === roomName) {
          status = 1;
          break;
        }
      }

for of 的形式 或者 比较常规 简单的写法

 for (const data of htlBaseInfo.RoomList) {
        if (data.RoomId === roomId || data.RoomName === roomName) {
          status = 1;
          break;
        }
      }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值