Skip to content
← Back to rules

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 に設定すると、forfor-infor-of ループの初期式において、初期化されていない変数を許可します。 この設定は、モードが "never" に設定されている場合にのみ有効です。

使用方法

設定ファイルまたは CLI でこのルールを有効化するには、次のようにします:

json
{
  "rules": {
    "init-declarations": "error"
  }
}
bash
oxlint --deny init-declarations

参照