JavaScript中“break Identifier”的用例是什么?

时间:2015-12-18 22:23:25

标签: javascript

规范goes

BreakStatement :   
    break ;
    break [no LineTerminator here] Identifier ;

然后它

  

程序包含带有可选标识符的break语句,其中Identifier不出现在封闭(但不是交叉函数边界)语句的标签集中。

     

...

     

具有标识符的BreakStatement的计算方法如下:

Return (break, empty, Identifier).

血淋淋的地球是什么意思?

2 个答案:

答案 0 :(得分:4)

标签是这样的:

// ...
mylabel:
// ...

这可以放在任何地方作为陈述。

当有多个嵌套break循环时,continue / for很有用。

其用法示例:

var i, j;

loop1:
for (i = 0; i < 3; i++) {      //The first for statement is labeled "loop1"
   loop2:
   for (j = 0; j < 3; j++) {   //The second for statement is labeled "loop2"
      if (i === 1 && j === 1) {
         continue loop1;
      }
      console.log("i = " + i + ", j = " + j);
   }
}

// Output is:
//   "i = 0, j = 0"
//   "i = 0, j = 1"
//   "i = 0, j = 2"
//   "i = 1, j = 0"
//   "i = 2, j = 0"
//   "i = 2, j = 1"
//   "i = 2, j = 2"
// Notice how it skips both "i = 1, j = 1" and "i = 1, j = 2"

Source

答案 1 :(得分:2)

如果您查看MDN,就会有例子

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使用标识符选择链中较高的标签,而不仅仅是第一个直接父语句。

没有标识符的默认操作是

outer_block: {
    inner_block: {
        console.log('1');
        break; // breaks out of the inner_block only
        console.log(':-('); // skipped
    }
    console.log('2'); // still executed, does not break
}

断点必须在标签内,你不能根据断点超出的标识符来破坏标签。