---
date: 2020-11-11
id: c5fef6b1-c659-42ef-8b51-7657df6743e8
title: JavaScript Strict Mode
---

# Description

[Strict
mode](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/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.

``` javascript
function canYouSpotTheProblem() {
  "use strict";
  for (counter = 0; counter < 10; counter++) {
    console.log("Happy happy");
  }
}

canYouSpotTheProblem();
// → ReferenceError: counter is not defined
```

In strict mode the \`this\` binding holds the value \`undefined\` in
functions that are not called as methods:

``` javascript
"use strict";

function doSomething() {
    console.log(this)
}
```
