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