Strict(厳格)モードとは
ECMAScript 5 で、Strict(厳格モード)が導入されました。ざっくりというと、より厳格な構文を要求し、バグにつながるような記述をしたときに、例外(エラー)が発生するようにできるモードです。記述は簡単で、Strictモードを開始したい箇所に次の1行を書きます。
"use strict";
// または、
'use strict';
この記述を注意深く見ると、ダブルクオートまたはシングルクオートで囲まれた文字列リテラルになっていますね。想像ですが、これだと Strictモードに対応していない古い環境でも例外を起こさず、実害が出ないというメリットがありそうです。
Strictモードで何が起きるのか
もっとも多いケースは、未宣言の変数の使用に対する例外でしょう。非Strictモードでは、変数を宣言しなくても使うことができます。たとえば、次にような TYPO を含むコードはどうでしょうか。
let date=3;
if (data==3) {
document.wrileln("dateは3です。")
}
dateと書くべきところをdataとTYPOしています。しかし、このコードは非Strictモードでは一見動いているように見えてしまします。もちろん、このようなシンプルな例では、すぐに気づくかもしれません。しかし、もっと大きなプログラムの中ならどうでしょうか。場合によっては、「なんとなく動いているけれど、たまにおかしくなる」プログラムが出来上がってしまうかもしれません。Strict モードならしっかり例外が出てくれて、発見できます。
"use strict";
let date=3;
if (data==3) {
document.wrileln("dateは3です。")
}
Strict モードを使おう
そんなわけで、JavaScriptを書くときには、特別な理由がない限りStrict モードを使いましょう。
注
- この記事は、ECMAScript 2015(ES6) を前提に書いています。古い実装では、異なる場合があります。