JavaScript 厳格モード
JavaScriptは非常に柔軟な言語であるため、開発者に多くの自由度を与えますが、その反面、ミスを犯しやすくなることも。そこで、より堅牢なコードを書くためのサポートとして導入されたのが厳格モード(strict mode)です。
厳格モードとは?
厳格モードは、JavaScriptのコードをより厳密なルールの下で実行するための方法です。これにより、コード内の一般的な問題や潜在的なバグを早期にキャッチすることができます。
どうやって有効にするの?
厳格モードを有効にするには、スクリプトの先頭に以下の宣言を追加します。
"use strict";
使用例
以下は "use strict";
の使用例です。
変数宣言
通常のJavaScriptでは、変数を宣言することなく直接変数を使用することができます。しかし、厳格モードではこれは許されません。
"use strict";
name = "haku"; // Error
書き込み禁止のプロパティ
厳格モードでは、読み取り専用のプロパティへの書き込みもエラーになります。
"use strict";
var obj = Object.defineProperty({}, 'property', {
writable: false
});
obj.property = "John"; // Error
重複したパラメーター名
厳格モードでは、関数のパラメーターに同じ名前を持つ変数を持つことができません。
"use strict";
function greet(name, name) { // Error
console.log("Hello, " + name);
}
with ステートメント
with
ステートメントは、厳格モードで使用することが禁止されています。
"use strict";
with (document.querySelector(".myClass")) { // Error
}
グローバル変数の削除
delete
演算子を使用してグローバル変数を削除しようとすると、厳格モードではエラーになります。
"use strict";
var globalVar = "Hello, World!";
delete globalVar; // Error
以上のような状況で "use strict";
ディレクティブを使用することで、コードの品質や安全性を向上させることができます。
厳格モードの利点
- 変数宣言の強制: 厳格モードでは、変数を宣言しないとエラーが発生します。
- 読み取り専用のプロパティの保護: 値の代入が禁止されているプロパティに値を設定しようとするとエラーが投げられます。
- thisの扱い: 通常の関数内での
this
はundefined
として扱われます。 - 未使用の引数の禁止: 重複した引数名は許可されません。
- 未来の予約語の保護: 新しいバージョンのJavaScriptで新たに追加される可能性のあるキーワードを使用することは禁止されています。
注意点
厳格モードは、既存のコードベースに導入すると、一部のコードが動作しなくなる可能性があります。そのため、既存のプロジェクトに導入する際は、十分なテストを行うことが推奨されます。
まとめ
JavaScriptの厳格モードは、より安全で高品質なコードを書くための強力なツールです。コードの品質を向上させ、バグのリスクを減少させるため、新しいプロジェクトを開始する際には厳格モードの使用を検討することをおすすめします。
コメント