来谈谈基础却重要的for循环

作为任何一种语言的程序员,相信你都用过各种各样的循环语句。最近我在开发的过程中因为for循环遇到了一点堵,所以在这里来梳理一下关于for循环的一些知识点。

最简单的for循环

这是最容易上手的一种循环类型,然后我因为基础知识不够扎实在这里踩了坑。

这是我最原始的代码

res.chip_list = {
    {'task_status':0},
    {'task_status':0},
    {'task_status':0},
    {'task_status':0},
    {'task_status':0},
}
for (let i = 0; i <= res.chip_list.length; i++) {
    if (res.chip_list[i].task_status === 0) {
      console.log(`页面去解锁碎片${i + 1}按钮_曝光`)
    } 
}

我希望得到的结果是整个循环出来只会输出一条数据,某个按钮曝光。但实际的输出是这样的

页面去解锁碎片1按钮_曝光
页面去解锁碎片1按钮_曝光
页面去解锁碎片1按钮_曝光
页面去解锁碎片1按钮_曝光
页面去解锁碎片1按钮_曝光

这是因为for会去遍历每一个i,因为后面的i都是0,所以都会被返回。

那要怎样才可以让它匹配到一个正确就不再往下执行了呢?

为此我尝试了很多方法,最后才知道原来在if里面是有return的,使用return,匹配到立即终止。

for (let i = 0; i <= res.chip_list.length; i++) {
    if (res.chip_list[i].task_status === 0) {
      console.log(`页面去解锁碎片${i + 1}按钮_曝光`)
      return
    } 
}

这样做在for循环内部输出,似乎已经没什么问题了,但是如果我们在外面看一下呢

for (let i = 0; i <= res.chip_list.length; i++) {
    if (res.chip_list[i].task_status === 0) {
      console.log(`页面去解锁碎片${i + 1}按钮_曝光`)
      return
    } 
}
console.log(1234)//不会输出

'1234'不会被输出。这是因为for循环在js里面并不是封闭的一块它与外面是直接连通的所以它一旦return后面的代码都不会再执行。

那怎么办呢?for循环里除了有return还有brake和continue呀,brake同样可以打断,而且后面的代码也是可以执行的哟~

for (let i = 0; i <= res.chip_list.length; i++) {
    if (res.chip_list[i].task_status === 0) {
      console.log(`页面去解锁碎片${i + 1}按钮_曝光`)
      brake
    } 
}
console.log(1234)//1234

我以前在开发的过程中重来没有用过brake这些,这次的坑让我警惕,并去看了一些其他关于for循环的知识。

我在知乎上看到一位大佬总结的很好,这里分享给大家
https://zhuanlan.zhihu.com/p/23812134?utm_source=tuicool&utm_medium=referral

原文地址:https://www.cnblogs.com/huyuzhu/p/8432594.html