Skip to content
← Back to rules

eslint/init-declarations Style

作用 ​

要求或禁止在变量声明中进行初始化。

为什么不好? ​

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

配置 ​

第一个选项 ​

类型:"always" | "never"

第二个选项 ​

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

ignoreForLoopInit ​

类型:boolean

默认值:false

当设置为 true 时,允许在 for、for-in 和 for-of 循环的初始化表达式中使用未初始化的变量。 仅在模式设置为 "never" 时适用。

如何使用 ​

To enable this rule using the config file or in the CLI, you can use:

json
{
  "rules": {
    "init-declarations": "error"
  }
}
ts
import { defineConfig } from "oxlint";

export default defineConfig({
  rules: {
    "init-declarations": "error",
  },
});
bash
oxlint --deny init-declarations

版本 ​

该规则在 v0.15.11 中新增。

参考资料 ​