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++) {}

配置

第一个选项

type: "always" | "never"

"always"

要求变量在声明时必须进行初始化。这是默认行为。

"never"

禁止在声明时进行初始化。

第二个选项

此选项是一个包含以下属性的对象:

ignoreForLoopInit

type: boolean

default: false

当设置为 true 时,允许在 forfor-infor-of 循环的初始化表达式中使用未初始化的变量。 仅在模式设置为 "never" 时生效。

如何使用

要通过配置文件或 CLI 启用此规则,可以使用:

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

参考资料