長い間、JavaScriptは互換性の問題なしに進化していました。新しい機能は言語に追加されましたが、古い機能は変更されませんでした。
それは既存のコードが決して壊れないというメリットがありました。しかし、欠点はJavaScript作成者による間違いや不十分な決定がこの言語から抜け出せなくなったことです。
ECMAScript 5(ES5) が登場したときは2009年でした。新しい機能が言語に追加され、既存の機能のいくつかが修正されました。古いコードが動作するのを保つために、ほとんどの修正はデフォルトではOFFです。特別なディレクティブ "use strict" を明示的に有効にする必要があります。
[cut]
そのディレクティブは文字列のように見えます: "use strict" もしくは 'use strict'。 これがスクリプトの先頭に位置する場合、すべてのスクリプトは "最新の" 方法で動作します。
例えば
"use strict";
// このコードはモダンな方法で動作します。
...私たちはこの後まもなく関数(コマンドをグループ化する方法)を学ぶのでここで言及しますが、"use strict" は関数の頭に置くことができることに留意してください。
この場合はその関数内でのみStrictモードが有効になります。しかし通常はスクリプト全体に対して使います。
`"use strict"` がスクリプトの先頭にあるようにしてください。そうでない場合 strict mode が有効でないかもしれません。
これは strict mode ではありません:
```js no-strict
alert("some code");
// 下の "use strict" は無視されます, 先頭にある必要があります
"use strict";
// strict mode はアクティブになりません
```
コメントだけは `"use strict"` の上に置けます。
```warn header="use strict をキャンセルする方法はありません"
`"no use strict"` または同系の古い振る舞いを返すようなディレクティブはありません。
一度 strict mode に入ったら戻ることはありません。
## ブラウザコンソール
実行コードに対して[開発者コンソール](info:devtools)を使用する場合、デフォルトでは `use strict` ではないことに留意してください。
`use strict` が差異を生むと、正しくない結果が得られる可能性があります。
ではどうやってコンソールで `use strict` を使うのでしょうか。
最初に、複数行入力するために `key:Shift+Enter` を押して、次のように `use strict` を置きます。
```js
'use strict'; <Shift+Enter で改行>
// ...コードを書く
<Enter で実行>
多くのブラウザ、すなわち Firefox や Chrome では動作します。
もし古いブラウザなどでそれができない場合、いまいちではありますが use strict を確実にするための信頼できる方法があります。ラッパーの中に置きます:
(function() {
'use strict';
// ...your code here...
})()この質問は明白かもしれませんが、そうではありません。
"use strict" でスクリプトを開始することをオススメします...が何がよいか知っているでしょうか?
モダンな JavaScript は "クラス" や "モジュール" --- 高度な言語構造をサポートしており、これらは use strict を自動的に有効にします。したがって、それらを利用する場合、"use strict" を追加する必要はありません。
なので、今のところ "use strict"; はスクリプトの先頭に書くことを推奨します。後でコードがすべてクラスとモジュールに含まれている場合は省略できます。
現段階では、use strict について一般的なことを知っていれば十分です
次のチャプターでは、言語の機能を学びながら strict モードと 古いモードの違いについて説明します。幸い、それほど多くありません。そしてそれらは実際に我々の開発をより良くします。
常に "use strict" で始まるスクリプトは推奨されます。このチュートリアルのすべての例は、そうでないと明示されていない限り(ほとんどないですが)それを想定しています。