JS中continue 和 break 的区别

361 阅读2分钟

当涉及到循环控制时,JavaScript 中的 continuebreak 关键字的区别如下:

  1. continue 关键字:

    • 在循环中遇到 continue 语句时,会立即跳过当前迭代的剩余代码,继续执行下一次迭代。
    • continue 只会影响当前循环,不会终止或跳出循环,循环会继续执行后续的迭代。

    示例:

    for (let i = 0; i < 5; i++) {
      if (i === 2) {
        continue;
      }
      console.log(i);
    }
    
    // 0 1 3 4
    

    在上述示例中,当 i 等于 2 时,continue 跳过当前迭代,不执行 console.log(i),继续执行下一次迭代。

  1. break 关键字:

    • 在循环中遇到 break 语句时,会立即终止循环的执行,跳出循环体,不再执行后续的迭代。
    • break 会完全终止循环,不再考虑后续的循环条件,循环外的代码将继续执行。

    示例:

    for (let i = 0; i < 5; i++) {
      if (i === 2) {
        break;
      }
      console.log(i);
    }
    
    // 0 1
    

    在上述示例中,当 i 等于 2 时,break 终止循环的执行,不再执行后续的迭代。

总结:

  • continue 跳过当前迭代,继续执行下一次迭代,不终止循环。
  • break 立即终止循环的执行,跳出循环体,终止循环的继续执行。


当涉及到循环嵌套时,continuebreak 的行为也有一些区别:

  1. continue

    • 在嵌套循环中,continue 语句只会跳过当前内层循环的剩余代码,并进入下一次内层循环的迭代,不会影响外层循环。

    示例:

    for (let i = 0; i < 3; i++) {
      for (let j = 0; j < 3; j++) {
        if (j === 1) {
          continue;
        }
        console.log(`i: ${i}, j: ${j}`);
      }
    }
    
    // i: 0, j: 0
    // i: 0, j: 2
    // i: 1, j: 0
    // i: 1, j: 2
    // i: 2, j: 0
    // i: 2, j: 2
    

  1. break

    • 在嵌套循环中,break 语句会完全终止当前内层循环的执行,并跳出内层循环,继续执行外层循环的下一次迭代。

    示例:

    for (let i = 0; i < 3; i++) {
      for (let j = 0; j < 3; j++) {
        if (j === 1) {
          break;
        }
        console.log(`i: ${i}, j: ${j}`);
      }
    }
    
    // i: 0, j: 0
    // i: 1, j: 0
    // i: 2, j: 0
    


需要注意的是,continuebreak 关键字只会影响当前所在的最内层循环。如果在嵌套循环中想要跳出外层循环,可以使用标签来标识外层循环,并结合 break 语句使用。

示例:

outerLoop: for (let i = 0; i < 3; i++) {
  for (let j = 0; j < 3; j++) {
    if (j === 1) {
      break outerLoop;
    }
    console.log(`i: ${i}, j: ${j}`);
  }
}

// i: 0, j: 0

在这个示例中,使用了 outerLoop 标签来标识外层循环,并在 break 语句中使用标签,从而在满足条件时跳出外层循环的执行。


总结:

  • continue 用于跳过当前内层循环的剩余代码,并进入下一次内层循环的迭代。
  • break 用于完全终止当前内层循环的执行,并跳出内层循环,继续执行外层循环的下一次迭代。
  • 若要跳出外层循环,可以使用标签和 break 结合使用。