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>
							 |