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
  • 相关阅读:
    Caffe学习系列(16):caffe的整体流程
    caffe_windows安装
    r-cnn学习系列(三):从r-cnn到faster r-cnn
    Spatial pyramid pooling (SPP)-net (空间金字塔池化)笔记(转)
    r-cnn学习(二)
    r-cnn学习(一)
    Caffe学习系列(13):对训练好的模型进行fine-tune
    注解
    MATLAB实现回归分析
    MATLAB进行假设检验
  • 原文地址:https://www.cnblogs.com/xiaolanschool/p/12767152.html
Copyright © 2011-2022 走看看