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