JavaScriptの厳密モード(Strict Mode)とは?使い方とメリットを解説
JavaScriptの厳密モード(Strict Mode)とは
厳密モード(Strict Mode)は、ECMAScript 5でJavaScriptに導入された機能です。通常のJavaScriptでは、未宣言の変数の使用など、本来エラーになるべき問題が「サイレントエラー」として黙って見過ごされることがあります。厳密モードを有効にすると、こうした問題が例外としてスローされるようになり、バグの早期発見とデバッグ作業の効率化につながります。
特に、未宣言の変数に遭遇した時点で例外がスローされるため、意図しないグローバル変数の生成を防ぎ、メモリリークのリスクを大幅に減らすことができます。開発者のうっかりミスを防ぐ安全装置として、現代のJavaScript開発では広く活用されています。
厳密モードの有効化方法
厳密モードは、スクリプトまたは関数の先頭に"use strict"という文字列を記述するだけで有効になります。スクリプト全体に適用する場合はファイルの先頭に、特定の関数だけに適用したい場合はその関数の冒頭に記述します。
"use strict";
// この行以降のコードが厳密モードで実行される
厳密モードの主なメリット
- 未宣言の変数への代入がエラーになり、意図しないグローバル変数の生成を防止できる
- 読み取り専用プロパティや削除不可プロパティへの不正操作がエラーとして検出される
- 重複した引数名やオブジェクトのプロパティ名がエラーになる
- サイレントエラーが例外として明示されるため、デバッグが格段にしやすくなる
例1:変数を宣言している場合(エラーなし)
次の例では2つの変数を使用しています。1つは関数の外側、もう1つは関数の内側です。関数の外側の変数は宣言されていませんが、外側には厳密モードが適用されていないため、そのまま値が表示されます。一方、関数の内側では"use strict"を記述していますが、変数がvarキーワードできちんと宣言されているため、エラーは発生しません。
<html>
<body>
<script>
myString1 = "非厳密モードでは未宣言の変数が許可されます"
document.write(myString1);
document.write("</br>");
function myFun(){
"use strict"
var myString2 = "厳密モードでは宣言された変数が許可されます"
document.write(myString2);
}
myFun();
</script>
</body>
</html>
出力結果
非厳密モードでは未宣言の変数が許可されます 厳密モードでは宣言された変数が許可されます
例2:変数を宣言していない場合(エラー発生)
次の例では、関数内の変数が宣言されていないまま値が代入されています。この関数には厳密モードが適用されているため、未宣言の変数へ代入しようとした時点でエラーがスローされ、処理はそこで中断します。ブラウザの開発者ツール(コンソール)を開くと、「myString2 is not defined」といったReferenceErrorを確認できます。
<html>
<body>
<script>
myString1 = "非厳密モードでは未宣言の変数が許可されます"
document.write(myString1);
document.write("</br>");
function myFun(){
"use strict"
myString2 = "厳密モードでは宣言された変数が許可されます"
document.write(myString2);
}
myFun();
</script>
</body>
</html>
出力結果
非厳密モードでは未宣言の変数が許可されます
2行目の出力は表示されず、代わりにコンソールにReferenceErrorが出力されます。これにより、問題のある箇所をすぐに特定できます。
まとめ
厳密モードは、JavaScriptの潜在的なバグを早期に発見するための強力な仕組みです。"use strict"を1行追加するだけで有効になり、未宣言変数の使用や不正な操作を明示的なエラーとして教えてくれるため、より安全で保守性の高いコードを書くことができます。新規プロジェクトでは積極的に活用することをおすすめします。
-
JavaScriptで厳密モード(Strict Mode)を有効にする方法
厳密モード(Strict Mode)とは?厳密モード(Strict Mode)は、ECMAScript 5(ES5)で導入された機能で、JavaScriptのプログラム全体、または個々の関数を「厳格な」実行コンテキストで動作させることができます。厳密なコンテキストでは、一部の危険な操作や非推奨の構文が禁止され、エラー発生時には通常よりも詳細な例外がスローされます。その結果、潜在的なバグを開発の早期段階で発見しやすくなります。厳密モードの主な特徴未宣言変数への代入がエラーになる:変数を宣言せずに直接代入すると失敗します。たとえば、foo が定義されていない状態で foo = bar; と記述する
-
JavaScriptの「厳密モード(Strict Mode)」とは?主な特徴と使い方を解説
「厳密モード(Strict Mode)」は、ES5(ECMAScript 5)で導入された機能で、プログラム全体または個々の関数を「より厳格な」実行環境で動作させることができます。この厳密なコンテキストでは、一部の危険な操作や非推奨の構文が禁止され、エラーが発生した際には通常よりも詳細な例外がスローされます。その結果、開発者はバグの原因をより早く特定できるようになります。厳密モードの主な特徴は以下の通りです。厳密モードの主な特徴宣言されていない変数への代入がエラーになる:変数 foo が未宣言の状態で foo = bar; のように代入しようとすると、エラーが発生します。通常モードでは暗黙的に