グローバルスコープに”use strict”を指定するのは一般には避けることが推奨されています。
『メンテナブルJavaScript ―読みやすく保守しやすいJavaScriptコードのための作法』より。
“use strict”プラグマは、グローバルスコープだけでなく、関数の中でローカルに指定することができます。
既存のコードを修正する場合、strictモードをグローバルスコープで指定すると、既存のコードにstrictモードに対応していないコードがあるとエラーになってしまいます。
// Bad: グローバルstrictモード
"use strict";
関数ないで指定することで、strictモードの適用範囲を限定できます。
function doSomething() {
"use strict";
//コード
}
複数の関数にstrictモードを適用したいときは、即時関数呼び出しを使います。
(function() {
"use strict";
function doSomething() {
// コード
}
function doSomethingElse() {
// コード
}
})();
グローバルなstrictモードをESLintで検査したい場合は、”rules”に次の設定を追加します。
(参考:Rule strict – ESLint – Pluggable JavaScript linter)
"strict": ["error", "function"]
Visual Studio CodeでESLintを使ったときの画面です。
グローバルなstrictモードをエラーとして検出しています。