break

概述

break 语句 中止当前循环,switch 语句或 label 语句,并把程序控制流转到紧接着被中止语句后面的语句。

语法

break [label];
label
可选的。是相关联的 label 语句的标志符。如果 break 语句不在一个循环或 switch 语句中,则该项是必须的。

描述

break 语句包含一个可选的标记(label),可允许程序摆脱一个被标记的语句(labeled statement)。break 语句需要内嵌在引用的 label 中。被标记的语句(labeled statement)可以是任何 语句;不一定是循环语句。

示例

下面的函数里有个 break 语句,当 i 为 3 时,会中止 while 循环,然后返回 3 * x 的值。

function testBreak(x) {
  var i = 0;
  while (i < 6) {
    if (i == 3) {
      break;
    }
    i += 1;
  }
  return i * x;
}

下面的代码中一起使用 break 语句和被标记的块语句(labeled blocks)。一个 break 语句必须内嵌在它引用的标记中。注意,inner_block 内嵌在 outer_block 中。

outer_block:{
  inner_block:{
    console.log ('1');
    break outer_block;      // breaks out of both inner_block and outer_block
    console.log (':-(');    // skipped
  }
  console.log ('2');        // skipped
}

下面的代码同样使用了 break 语句和被标记的块语句(labeled blocks),但是产生了一个语法错误(Syntax Error),因为它的 break 语句在 block_1 中,但是引用了 block_2break 语句必须内嵌在它引用的 label 中。

block_1:{
  console.log ('1');
  break block_2;            // SyntaxError: label not found
}
block_2:{
  console.log ('2');
}

规范

Specification Status Comment
ECMAScript 1st Edition Standard 初始版本,无label标记
ECMAScript 3rd Edition Standard 增加了label标记
ECMAScript 5.1 (ECMA-262)
Break statement
Standard  
ECMAScript 2015 (6th Edition, ECMA-262)
Break statement
Standard  
ECMAScript 2017 Draft (ECMA-262)
Break statement
Draft  

浏览器兼容性

Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari
Basic support (Yes) (Yes) (Yes) (Yes) (Yes)
Feature Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Basic support (Yes) (Yes) (Yes) (Yes) (Yes) (Yes)

相关链接

文档标签和贡献者