JSLintで「Use the function form of "use strict"」と警告された時の対処法
JSLintが突然「Use the function form of "use strict"」と報告する理由
最近、JSLintを使用している際に、以下の警告が表示されるようになったという報告が増えています。
Use the function form of "use strict"
この警告は、コード内で「use strict」が正しく使用されていないことを示しています。
警告の原因
「use strict」は、JavaScriptコードを厳格モードで実行させるためのディレクティブです。厳格モードでは、いくつかの非推奨の構文や動作が無効になります。
従来、「use strict」は以下のように記述されていました。
"use strict";
// 厳格モードで実行されるコード
しかし、この記述方法は非推奨になりました。代わりに、以下の関数形式を使用する必要があります。
(function() {
"use strict";
// 厳格モードで実行されるコード
})();
解決方法
JSLintから「Use the function form of "use strict"」という警告が表示された場合は、以下の手順で解決できます。
- コード内のすべての「use strict」を関数形式に書き換えます。
- JSLintを実行して、警告が消えていることを確認します。
関数形式を使用するメリットは以下のとおりです。
- コードの読みやすさが向上する
- スコープが明確になる
- 厳格モードの適用範囲を明確にできる
非推奨の記述方法
"use strict";
// 厳格モードで実行されるコード
function foo() {
// 厳格モードではない
}
関数形式による書き換え
(function() {
"use strict";
// 厳格モードで実行されるコード
function foo() {
// 厳格モード
}
})();
// 厳格モードで実行されるファイル全体
(function() {
"use strict";
// すべてのコード
})();
// 厳格モードで実行されるモジュール
(function(exports) {
"use strict";
// モジュールのコード
exports.foo = function() {
// 厳格モード
};
})();
他の方法
モジュールローダーを使用する
ES6モジュールローダーを使用している場合は、以下のようにモジュール内で「use strict」を指定できます。
// my-module.js
export function foo() {
"use strict";
// 厳格モード
}
// main.js
import { foo } from "./my-module.js";
foo(); // 厳格モード
Babelを使用する
Babelは、JavaScriptコードを古いブラウザで動作するように変換するためのツールです。Babelを使用している場合は、以下のようにコードに「use strict」を追加できます。
// babel.config.js
module.exports = {
presets: ["@babel/preset-env"],
};
// my-code.js
function foo() {
// 非厳格モードのコード
}
// 厳格モードで実行するコード
(function() {
"use strict";
foo(); // 厳格モード
})();
TypeScriptは、JavaScriptのスーパーセットであり、厳格モードがデフォルトで有効になっています。
// my-code.ts
function foo(): void {
// 厳格モード
}
// 厳格モードで実行するコード
(function(): void {
foo(); // 厳格モード
})();
関数形式以外にも、「use strict」を正しく使用する方法はいくつかあります。それぞれの方法にはメリットとデメリットがあるので、状況に合わせて最適な方法を選択してください。
javascript jslint