zoukankan      html  css  js  c++  java
  • 终止循环

    今天在写一个简单的循环时候,需求是判断有指定的值就返回当前值,并跳出循环,我首先想到是forEach,再在里面使用if判断,得到指定的值就使用break跳出循环,然并... 嗖嗖嗖的去找度娘 ** foreach()不能使用break和continue以及await关键字**

    跳出循环方法(break,continue,return)

    break语句

    • break语句会使最内层的循环终止或者退出switch语句。
    1. break出现在循环体中,就跳出本层循环体
    2. break出现switch语句体中,就跳出该switch语句体

    continue语句

    • continue语句跳过本次循环,立即进行下一次循环。
    1. continue结束本次循环,仅仅是本次循环结束,但未终止整个循环
    2. 在while和do-while循环体中,continue语句使流程跳到控制条件的部分
    3. 在for循环中,遇到continue就会跳过循环体余下的语句,继续对for语句中表达式判断

    return语句

    • return语句用于指定函数返回值,只能用于函数体内。
    1. return从当前方法退出,返回到该调用的方法的语句处

    forEach跳出循环

    1. 使用break, 报错Uncaught SyntaxError: Illegal break statement
     [1,2,3].forEach(item => {
        if(item === 2) {
           break
        }
        console.log(item)
     })
    
    1. 使用return, 只是终止本次循环,而不是终止for循环,打印出来是1 3
     [1,2,3].forEach(item => {
        if(item === 2) {
           return false
        }
        console.log(item)
     })
    

    解决方式

    因为forEach无法通过正常流程终止,所以可以通过抛出异常方式实现终止

    try{
     [1,2,3].forEach(item => {
        if(item === 2) {
           throw new Error('error')
        }
        console.log(item)
     })
     } catch(e) {
       if(e.message !== 'error') throw e
     }
     // 打印出来就只有1
    
    • forEach只支持同步代码,无法在内部处理异步
      function test () {
      const arr = [11, 2, 3]
      arr.forEach(async item => {
      const res = await fetch(item)
      console.log(res)
      })
      }
      function fetch (x) {
      return new Promise(resolve => {
      setTimeout(() => {
      resolve(x)
      }, 500 * x)
      })
      }
      test()
      // 期望结果11 2 3,得到打印顺序 2 3 11
  • 相关阅读:
    python学习之路(目录)--你想要的都在这里了
    计算机视觉学习之路(目录)------你想要的都在这里了
    python flask构建小程序订餐系统--centos下项目开发环境的搭建
    图像处理--图像特效
    数据库--初识数据库
    python基础-面向对象进阶
    JavaScript 模块封装
    JavaScript calss语法糖
    JavaScript 原型与继承
    JavaScript Object对象
  • 原文地址:https://www.cnblogs.com/xiaolanschool/p/12767152.html
Copyright © 2011-2022 走看看