js循环总结,及跳出循环

298 阅读2分钟

常见循环语句

总结

  1. break:整个循环结束 continue:退出本次循环, 终止函数内循环执行
  2. 对于forfor ... infor ... ofwhiledo ... while,使用breakcontinuereturn都终止循环。
  3. 对于forEach,map,filter等数组方法,则需要使用throw Error抛出异常,并使用使用try,ctach保证报错后继续执行。

1.for语句

基本语法

// 括号中的三个条件都可省略 

for ([initialExpression]; [condition]; [incrementExpression]) statement

注意:当condition为true时,执行顺序:

initialExpression->condition->statement->incrementExpression

终止条件

终止for循环的方式:breakcontinue ,return

break:整个循环结束 continue:退出本次循环, return终止函数内循环执行

let list = [1, 2, 3, 4]
for (let i = 0; i < list.length; i++) {
  if (i == 1) {
    continue
  }
  if (i == 2) { 
    break;
  }
}

2.while循环
while (condition) statement

while循环特点:先判断后执行,当condition为true时,则执行statement

终止条件

终止for循环的方式:breakcontinue ,return

break:整个循环结束 continue:退出本次循环, return终止函数内循环执行

function searchArray(arr, target) {
  let i = 0;
  while (i < arr.length) {
    if (arr[i] === target) {
      return false;
    }
    if (arr[i] === target+1) {
      break;
    }
    i++;
  }
  return -1;
}

3.do ... while语句

基本语法
复制代码
do
  statement
while (condition);

do-while循环特点:先执行再判断,即使初始条件不成立,do-while循环至少执行一次,也就是说do-while循环比while循环多执行一次。

终止条件

终止for循环的方式:breakcontinue ,return

break:整个循环结束 continue:退出本次循环, return终止函数内循环执行

function searchArray(arr, target) {
  let i = 0;
  do {
    i++;
    console.log(i)
      if(i===5){
          return false
      }
      if(i===5){
          break
      }
    } while (i < 10)
  return -1;
}

4.for…of和for…in语句

注意for…in循环将遍历对象本身的所有可枚举属性,以及对象从其构造函数原型中继承的属

终止条件

终止for循环的方式:breakcontinue ,return

break:整个循环结束 continue:退出本次循环, return终止函数内循环执行

function FroIn(arr, target) {
  let obj={'name':'abc','age': 22,'height':'180'};
    for(let i in obj){
          console.log(i,obj[i])
          if(obj[i]===22){
              continue
          }
          if(obj[i]===22){
              return false
          }
          if(obj[i]==='abc'){
              break
          }
    }
}

function FroOf(arr, target) {
  var arr = ['a', 22, 'c', 33];
    for(let i of arr){
          console.log(i)
          if(i===22){
              continue
          }
          if(i==='c'){
              return false
          }
          if(i==='c'){
              break
          }
    }
}

4.map和forEach,filter

终止条件

forEach,map,filter等语句使用breakcontinue ,return无效,如果需要中断循环,则应考虑throw Error

try {
  Array(10)
    .fill('')
    .map((item, i) => i)
    .forEach((item, i) => {
      console.log(i)
      if (i == 5) {
        // break; // Uncaught SyntaxError: Illegal break statement
        // return false // 无效
        throw Error('error') // 有效,并报错,VM555:9 Uncaught Error: error
      }
    })
  console.log('end') // 未执行 throw Error 中止
} catch (e) {
  if (e.message != 'error') throw e
}
console.log('next') // 使用try,ctach保证报错后继续执行