長い間、JavaScript は互換性の問題なく進化してきました。新しい機能が言語に追加されましたが、古い機能は変更されませんでした。
これには、既存のコードを壊すことがないという利点がありました。しかし、欠点は、JavaScript の作成者が行った間違いや不完全な決定が言語に永久に残るということでした。
これは、ECMAScript 5 (ES5) が登場する 2009 年まで当てはまりました。この言語に新しい機能が追加され、既存の機能の一部が変更されました。古いコードを動作し続けるために、そのような変更のほとんどはデフォルトでオフになっています。特別なディレクティブ"use strict"
を使用して明示的に有効にする必要があります。
ディレクティブは、 "use strict"
または'use strict'
文字列のように見えます。これがスクリプトの先頭にある場合、スクリプト全体が「最新の」方法で動作します。
例えば:
"厳密な使用"; // このコードは現代的な方法で動作します ...
すぐに関数 (コマンドをグループ化する方法) を学習する予定なので、 "use strict"
関数の先頭に置くことができることに事前に注意してください。これを行うと、その関数でのみ厳密モードが有効になります。しかし、通常はスクリプト全体にそれを使用します。
「use strict」が一番上にあることを確認してください
スクリプトの先頭に"use strict"
があることを確認してください。そうしないと、strict モードが有効にならない可能性があります。
ここでは厳密モードが有効になっていません:
alert("何らかのコード"); // 以下の「use strict」は無視されます。先頭になければなりません "厳密な使用"; // 厳密モードはアクティブ化されていません
"use strict"
の上にはコメントのみが表示されます。
use strict
をキャンセルする方法はありません
エンジンを古い動作に戻す"no use strict"
のようなディレクティブはありません。
一度厳密モードに入ると、もう後戻りはできません。
開発者コンソールを使用してコードを実行する場合、デフォルトではuse strict
ないことに注意してください。
use strict
と、場合によっては、誤った結果が得られることがあります。
では、実際にコンソールでuse strict
はどうすればよいでしょうか?
まず、 Shift + Enter を押して複数行を入力し、次のようにuse strict
先頭に置きます。
'厳密を使用'; <Shift+Enter で改行> // ...あなたのコード <実行するには入力してください>
Firefox や Chrome など、ほとんどのブラウザで動作します。
古いブラウザなどでそうでない場合は、醜いですが確実にuse strict
方法があります。このようなラッパーの中に入れます。
(関数() { '厳密を使用'; // ...コードはここにあります... })()
この質問は当然のように聞こえるかもしれませんが、そうではありません。
"use strict"
でスクリプトを開始することをお勧めします…しかし、何がクールなのかご存知ですか?
最新の JavaScript は、 use strict
を可能にする高度な言語構造 (必ず説明します) である「クラス」と「モジュール」をサポートしています。したがって、使用する場合、 "use strict"
ディレクティブを追加する必要はありません。
したがって、今のところは"use strict";
はスクリプトの先頭にある歓迎ゲストです。後で、コードがすべてクラスとモジュール内にある場合は、それを省略できます。
現時点では、 use strict
について一般的に理解する必要があります。
次の章では、言語の機能を学びながら、厳密モードと古いモードの違いを見ていきます。幸いなことに、それらはそれほど多くはなく、実際に私たちの生活を改善します。
このチュートリアルのすべての例は、特に指定されていない限り、厳密モードを想定しています。