• 来谈谈基础却重要的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

  • 相关阅读:
    Redis过期key是怎么样清理的?----互联网大厂面试题
    Docker容器引擎使用教程
    区块链算法
    MYSQL 常用语句与函数命令
    漏洞利用:验证绕过,XSS利用,Cookic盗用,文件上传
    小白网工入行要具备哪些基本技能?
    VMware中乌班图安装VMtools步骤
    防火墙技术原理-思维导图
    JAVA学习第一课-手工笔记
    DOS(磁盘操作系统)基本命令-思维导图
  • 原文地址:https://www.cnblogs.com/huyuzhu/p/8432594.html
Copyright © 2020-2023  润新知