長い間、JavaScriptは互換性の問題なしに進化してきました。
それは、既存のコードを壊さないというメリットがありました。
これは2009年にECMAScript 5(ES5)が登場するまでの話です。 ECMAScript 5(ES5)が登場した2009年まではそうでした。 古いコードを使い続けるために、このような修正のほとんどはデフォルトではオフになっています。 特別なディレクティブを使って明示的に有効にする必要があります。 "use strict"
.
“use strict”
このディレクティブは文字列のようになっています。 "use strict"
'use strict'
のようになります。 このディレクティブをスクリプトの先頭に置くと、スクリプト全体が「モダン」な方法で動作します。
例:
"use strict";// this code works the modern way...
すぐに関数(コマンドをグループ化する方法)を学ぶことになるので、事前に "use strict"
を関数の先頭に置くことができることを覚えておきましょう。 これをすると、その関数だけでストリクトモードが有効になります。
スクリプトの先頭に "use strict"
があることを確認してください、さもなければ strict mode が有効にならないかもしれません。
ここではストリクトモードが有効になっていません:
alert("some code");// "use strict" below is ignored--it must be at the top"use strict";// strict mode is not activated
コメントだけが "use strict"
の上に表示されることがあります。
use strict
"no use strict"
のように、エンジンを以前の動作に戻すようなディレクティブはありません。
いったん厳格なモードに入ると、もう元には戻りません。
ブラウザコンソール
開発者コンソールを使用してコードを実行する場合、デフォルトでは use strict
しないことに注意してください。
時には、use strict
で違いが出ると、正しくない結果が出てしまいます。
では、実際にコンソールでuse strict
を行うにはどうすればよいのでしょうか。
まず、Shift+Enterを押して複数行を入力し、次のようにuse strict
を上に配置してみてください:
'use strict'; <Shift+Enter for a newline>// ...your code<Enter to run>
ほとんどのブラウザ、すなわちFirefoxとChromeで動作します。
古いブラウザなどで動作しない場合は、醜いながらも確実に use strict
を確保する方法があります。
(function() { 'use strict'; // ...your code here...})()
Should we “use strict”?
この質問は明らかに聞こえるかもしれませんが、そうではありません。
スクリプトを "use strict"
で始めることを勧めることもできますが、何がクールかというと、
現代の JavaScript は「クラス」や「モジュール」という高度な言語構造をサポートしており (これから説明します)、それによって use strict
が自動的に有効になります。
というわけで、今のところ、"use strict";
は、スクリプトの先頭に置かれる歓迎すべきゲストです。
現時点では、一般的な use strict
について知ることができました。
次の章では、言語機能を学びながら、厳格なモードと古いモードの違いを見ていきます。
このチュートリアルのすべての例では、(非常にまれな)別段の指定がない限り、strict モードを想定しています。