What is the use case for "Break ID" in JavaScript?

specification goes

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

then it goes

The program contains a break statement with an optional identifier, where the identifier is not displayed in the set of labels of prisoners (but not intersecting function boundaries).

...

A BreakStatement with id is evaluated as follows:

 Return (break, empty, Identifier). 

What does bloody land mean?

+5
source share
2 answers

The shortcut looks something like this:

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

This can be placed anywhere as an instruction.

It is useful to break / continue with multiple nested for loops.

An example of its use:

 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

+4
source

If you look at MDN , there are examples

 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 } 

as you can see, you can break with an identifier that selects a label higher in the chain than just the first immediate parent statement.

The default action without an identifier will be

 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 } 

The gap must be inside the label, you cannot break the labels based on the indentation so that the gap is outside.

+2
source

Source: https://habr.com/ru/post/1238676/


All Articles