strictモードはグローバルスコープで指定しない

グローバルスコープに”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モードをエラーとして検出しています。

eslint-global-strict-mode

メンテナブルJavaScript ―読みやすく保守しやすいJavaScriptコードのための作法』勉強になります。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください