eslint/init-declarations スタイル
何をするか
変数宣言での初期化を必須にするか、禁止するかを制御します。
なぜ問題なのか
JavaScript では、変数の宣言時に初期化を行うことも、後に代入文を使って初期化することも可能です。 たとえば、次のコードでは foo は宣言時に初期化されていますが、bar は後で初期化されています。
js
var foo = 1;
var bar;
if (foo) {
bar = 1;
} else {
bar = 2;
}例
デフォルトの "always" オプションに対して不正なコードの例:
js
/* init-declarations: ["error", "always"] */
function foo() {
var bar;
let baz;
}"never" オプションに対して不正なコードの例:
js
/* init-declarations: ["error", "never"] */
function foo() {
var bar = 1;
let baz = 2;
for (var i = 0; i < 1; i++) {}
}デフォルトの "always" オプションに対して正しいコードの例:
js
/* init-declarations: ["error", "always"] */
function foo() {
var bar = 1;
let baz = 2;
const qux = 3;
}"never" オプションに対して正しいコードの例:
js
/* init-declarations: ["error", "never"] */
function foo() {
var bar;
let baz;
const buzz = 1;
}"never", { "ignoreForLoopInit": true } オプションに対して正しいコードの例:
js
/* init-declarations: ["error", "never", { "ignoreForLoopInit": true }] */
for (var i = 0; i < 1; i++) {}設定
1 番目のオプション
type: "always" | "never"
"always"
変数の宣言時に初期化を行うことを必須とします。これがデフォルトの動作です。
"never"
宣言時の初期化を禁止します。
2 番目のオプション
このオプションは以下のプロパティを持つオブジェクトです:
ignoreForLoopInit
type: boolean
default: false
true に設定すると、for、for-in、for-of ループの初期式において、初期化されていない変数を許可します。 この設定は、モードが "never" に設定されている場合にのみ有効です。
使用方法
設定ファイルまたは CLI でこのルールを有効化するには、次のようにします:
json
{
"rules": {
"init-declarations": "error"
}
}bash
oxlint --deny init-declarations