JavaScript Strict Mode
Description
[[https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Strict\_mode]\[Strict mode]] makes several changes to normal JavaScript semantics:
- Eliminates some JavaScript silent errors by changing them to throw errors.
- 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.
- Prohibits some syntax likely to be defined in future versions of ECMAScript.
function canYouSpotTheProblem() {
"use strict";
for (counter = 0; counter < 10; counter++) {
console.log("Happy happy");
}
}
canYouSpotTheProblem();
// → ReferenceError: counter is not definedIn strict mode the this binding holds the value undefined in functions that are not called as methods:
"use strict";
function doSomething() {
console.log(this)
}