56 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			56 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| 
								 | 
							
								---
							 | 
						||
| 
								 | 
							
								title: Strict Mode
							 | 
						||
| 
								 | 
							
								---
							 | 
						||
| 
								 | 
							
								Strict Mode was introduced in ECMAScript 5 that allows you to place a program, or a function, in a "strict" operating context. This strict context prevents certain actions from being taken and throws more exceptions.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Strict mode makes several changes to normal JavaScript semantics.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								*   First, strict mode eliminates some JavaScript silent errors by changing them to throw errors.
							 | 
						||
| 
								 | 
							
								*   Second, strict mode fixes mistakes that make it difficult for JavaScript engines to perform optimizations: strict mode code can sometimes be made to run faster than identical code that's not strict mode.
							 | 
						||
| 
								 | 
							
								*   Third, strict mode prohibits some syntax likely to be defined in future versions of ECMAScript.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Strict mode code and non-strict mode code can coexist in a same script.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```javascript
							 | 
						||
| 
								 | 
							
								// Non-strict code...
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								(function(){
							 | 
						||
| 
								 | 
							
								    "use strict";
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    // Define your library strictly...
							 | 
						||
| 
								 | 
							
								})();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// Non-strict code...
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								## Invoking strict mode
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Strict mode applies to _entire scripts_ or to _individual functions_.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								**Strict mode for scripts**
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```javascript
							 | 
						||
| 
								 | 
							
								// Whole-script strict mode syntax
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								"use strict";
							 | 
						||
| 
								 | 
							
								var v = "Hi!  I'm a strict mode script!";
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								**Strict mode for functions**
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```javascript
							 | 
						||
| 
								 | 
							
								function strict(){
							 | 
						||
| 
								 | 
							
								    // Function-level strict mode syntax
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    'use strict';
							 | 
						||
| 
								 | 
							
								    function nested() { return "And so am I!"; }
							 | 
						||
| 
								 | 
							
								    return "Hi!  I'm a strict mode function!  " + nested();
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function notStrict() { return "I'm not strict."; }
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								**Basically it helps you make fewer errors, by detecting things that could lead to breakage which are not detected normally (non-strict mode).**
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								_For more information check out this <a href='https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Strict_mode' target='_blank' rel='nofollow'>MDN page</a>._
							 |