80 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			80 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| ---
 | |
| title: Labeled Statement
 | |
| ---
 | |
| ## Labeled Statement
 | |
| 
 | |
| The **Labeled Statement** is used with the `break` and `continue` statements and serves to identify the statement to which the `break` and `continue` statements apply.
 | |
| 
 | |
| ### Syntax
 | |
| ``` javascript
 | |
| labelname:
 | |
|   statements
 | |
| ```
 | |
| ### Usage
 | |
| Without the use of a `labeled` statement the `break` statement can only break out of a loop or a `switch` statement. Using a `labeled` statement allows `break` to jump out of any code block.
 | |
| #### Example
 | |
| ``` javascript
 | |
| foo: {
 | |
|   console.log("This prints:");
 | |
|   break foo;
 | |
|   console.log("This will never print.");
 | |
| }
 | |
| console.log("Because execution jumps to here!")
 | |
| /* output
 | |
| This prints:
 | |
| Because execution jumps to here! */
 | |
| ```
 | |
| When used with a `continue` statement the `labeled` statement allows you to skip a loop iteration, the advantage comes from being able to jump out from an inner loop to an outer one when you have nested loop statements. Without the use of a `labeled` statement you could only jump out of the existing loop iteration to the `next iteration of the same loop.`
 | |
| #### Example
 | |
| ``` javascript
 | |
| // without labeled statement, when j==i inner loop jumps to next iteration
 | |
| function test() {
 | |
|   for (var i = 0; i < 3; i++) {
 | |
|     console.log("i=" + i);
 | |
|     for (var j = 0; j < 3; j++) {
 | |
|       if (j === i) {
 | |
|         continue;
 | |
|       }
 | |
|       console.log("j=" + j);
 | |
|     }
 | |
|   }
 | |
| }
 | |
| 
 | |
| /* output
 | |
| i=0 (note j=0 is missing)
 | |
| j=1
 | |
| j=2
 | |
| i=1
 | |
| j=0 (note j=1 is missing)
 | |
| j=2
 | |
| i=2
 | |
| j=0
 | |
| j=1 (note j=2 is missing)
 | |
| */
 | |
| 
 | |
| // using a labeled statement we can jump to the outer (i) loop instead
 | |
| function test() {
 | |
|   outer: for (var i = 0; i < 3; i++) {
 | |
|     console.log("i=" + i);
 | |
|     for (var j = 0; j < 3; j++) {
 | |
|       if (j === i) {
 | |
|         continue outer;
 | |
|       }
 | |
|       console.log("j=" + j);
 | |
|     }
 | |
|   }
 | |
| }
 | |
| 
 | |
| /*
 | |
| i=0 (j only logged when less than i)
 | |
| i=1
 | |
| j=0
 | |
| i=2
 | |
| j=0
 | |
| j=1
 | |
| */
 | |
| ```
 | |
| 
 | |
| ### More Information:
 | |
| <a href='https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/label' target='_blank' rel='nofollow'>MDN</a>
 |