java-script:strict-mode
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
java-script:strict-mode [2023/07/26 17:22] – odefta | java-script:strict-mode [2023/08/09 12:41] (current) – odefta | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== Java Script Strict mode ====== | ====== Java Script Strict mode ====== | ||
+ | |||
+ | ===== Description ===== | ||
The "**use strict**" | The "**use strict**" | ||
\\ \\ | \\ \\ | ||
- | When you put "use strict" | + | When you put "use strict" |
+ | Strict mode makes several changes to the normal JavaScript behavior, such as turning some silent errors into thrown errors, fixing mistakes that can make it difficult for JavaScript engines to perform optimizations, | ||
- | Examples: | + | It must be enclosed in quotes, either single (**' |
+ | |||
+ | <note tip> | ||
+ | It's a good practice to use strict mode to catch common coding mistakes and " | ||
+ | </ | ||
+ | |||
+ | ===== Enabling strict mode ===== | ||
+ | |||
+ | ==== For an entire script ==== | ||
+ | |||
+ | <code javascript> | ||
+ | "use strict"; | ||
+ | |||
+ | function sayHello() { | ||
+ | console.log(this.name, | ||
+ | } | ||
+ | |||
+ | // rest of the code | ||
+ | </ | ||
+ | |||
+ | ==== For a specific function ==== | ||
+ | |||
+ | <code javascript> | ||
+ | function sayHello() { | ||
+ | "use strict"; | ||
+ | console.log(this.name, | ||
+ | } | ||
+ | |||
+ | // rest of the code | ||
+ | |||
+ | </ | ||
+ | |||
+ | ===== Examples | ||
+ | ==== This will not fallback to window in strict mode ==== | ||
+ | |||
+ | <code javascript> | ||
+ | "use strict"; | ||
+ | |||
+ | function sayHello() { | ||
+ | console.log(this.name, | ||
+ | } | ||
+ | |||
+ | // ... rest of the code ... | ||
+ | |||
+ | sayHello(); // TypeError: Cannot read properties of undefined (reading ' | ||
+ | </ | ||
+ | In strict mode, **this** inside the **sayHello** function will be **undefined** when called without an object, leading to a TypeError when attempting to access properties on it. | ||
+ | |||
+ | ==== Cannot use global variables defined without var ==== | ||
<code javascript> | <code javascript> | ||
Line 11: | Line 62: | ||
x = 3.14; // This will throw an error because x is not declared. | x = 3.14; // This will throw an error because x is not declared. | ||
</ | </ | ||
+ | |||
+ | ==== Denial of usage of special variables / properties ==== | ||
Assigning to Read-Only Global Variables and Properties: Assigning a value to a read-only property, a getter-only property, a non-writable global variable, or a non-writable property of an object will throw an error. | Assigning to Read-Only Global Variables and Properties: Assigning a value to a read-only property, a getter-only property, a non-writable global variable, or a non-writable property of an object will throw an error. | ||
Line 18: | Line 71: | ||
undefined = " | undefined = " | ||
</ | </ | ||
+ | |||
+ | ==== Prevent the removal of variables / functions ==== | ||
Deleting Variables, Functions, or Function Parameters: Attempting to delete variables, functions, or function parameters will throw an error. | Deleting Variables, Functions, or Function Parameters: Attempting to delete variables, functions, or function parameters will throw an error. | ||
Line 26: | Line 81: | ||
delete x; // This will throw an error | delete x; // This will throw an error | ||
</ | </ | ||
+ | |||
+ | ==== Avoid duplicate parameter names ==== | ||
Duplicate Parameter Names: Duplicate parameter names in function declarations will throw an error. | Duplicate Parameter Names: Duplicate parameter names in function declarations will throw an error. | ||
Line 33: | Line 90: | ||
function x(p1, p1) {} // This will throw an error | function x(p1, p1) {} // This will throw an error | ||
</ | </ | ||
+ | |||
+ | ==== Deprecated octal syntax ==== | ||
Octal Syntax: Octal syntax in ECMAScript 5 is deprecated, and strict mode will not allow it. | Octal Syntax: Octal syntax in ECMAScript 5 is deprecated, and strict mode will not allow it. |
java-script/strict-mode.1690381327.txt.gz · Last modified: 2023/07/26 17:22 by odefta