版本

init-declarations

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

❄️ 已冻结

此规则目前处于冻结状态,不接受功能请求。

在 JavaScript 中,变量可以在声明期间赋值,或者在之后的任何时候使用赋值语句赋值。例如,在以下代码中,foo 在声明期间被初始化,而 bar 则稍后被初始化。

let foo = 1;
let bar;

if (foo) {
    bar = 1;
} else {
    bar = 2;
}

规则详情

此规则旨在强制或消除在声明期间进行变量初始化。例如,在以下代码中,foo 在声明期间被初始化,而 bar 则没有。

let foo = 1;
let bar;

bar = 2;

此规则旨在为变量初始化和声明带来一致性。

选项

此规则接受两个选项

  1. 一个字符串,必须是 "always"(默认值),以强制在声明时初始化,或者是 "never",以禁止在声明期间初始化。此规则适用于 varletconst 变量,但是 "never"const 变量无效,因为未赋值的 const 变量会产生解析错误。
  2. 一个对象,用于进一步控制此规则的行为。目前,唯一可用的参数是 ignoreForLoopInit,它指示当设置为 "never" 时,是否允许在 for 循环中进行声明时初始化,因为它是一个非常典型的用例。

您可以按如下方式配置规则

变量必须在声明时初始化 (默认)

{
    "init-declarations": ["error", "always"],
}

变量不得在声明时初始化

{
    "init-declarations": ["error", "never"]
}

变量不得在声明时初始化,但在 for 循环中允许初始化

{
    "init-declarations": ["error", "never", { "ignoreForLoopInit": true }]
}

always

"always" 默认选项的错误代码示例

在 Playground 中打开
/*eslint init-declarations: ["error", "always"]*/

function foo() {
    var bar;
    let baz;
}

"always" 默认选项的正确代码示例

在 Playground 中打开
/*eslint init-declarations: ["error", "always"]*/

function foo() {
    var bar = 1;
    let baz = 2;
    const qux = 3;
}

never

"never" 选项的错误代码示例

在 Playground 中打开
/*eslint init-declarations: ["error", "never"]*/

function foo() {
    var bar = 1;
    let baz = 2;

    for (let i = 0; i < 1; i++) {}
}

"never" 选项的正确代码示例

在 Playground 中打开
/*eslint init-declarations: ["error", "never"]*/

function foo() {
    var bar;
    let baz;
    const buzz = 1;
}

"never" 选项忽略 const 变量的初始化。

ignoreForLoopInit

"never", { "ignoreForLoopInit": true } 选项的正确代码示例

在 Playground 中打开
/*eslint init-declarations: ["error", "never", { "ignoreForLoopInit": true }]*/
for (let i = 0; i < 1; i++) {}

何时不使用

当您对变量如何初始化无所谓时。

版本

此规则在 ESLint v1.0.0-rc-1 中引入。

资源

更改语言