init-declarations

在变量声明中要求或不允许初始化

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

var foo = 1;
var bar;

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

规则详情

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

var foo = 1;
var bar;

bar = 2;

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

选项

该规则有两个选项:

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

0/Wck/fpgfQzNGbkN+L/tO6K4rY/RSDTbCS0aAYZxHsLjjy4vU4TFLY61Rm7u7LO

z08jeYOl5PO5jwvZ0TplHnS7juZoGaBSAZswCnXZxGCzGbMv2v+4/vUzyYaAin7z

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

KdWz3b5E3Asj/w62GTW7+RvBtpXW8h97TA/76b3G7v4s1+Dgawon4UCnD3cNhmDl

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

cp7hKrJrK8oaSKSBgYT7OVSVuYA29GxFnQQ0iCygwN01w3SLFxJ0lWxe8++qRpqm5pt/+u+bsj/faAFaVkBTMNDutvGk+U5bCvYQ0VMjFOo=

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

always

ZBOSmbOO1JVaI8uTYWmdGnNHCcrlRc0VOrwYlwIQBoiOweARuAJhzm6eZNW3MUMk+ziTD+1ydT52r30NCLSYFg==

/*eslint init-declarations: ["error", "always"]*/
/*eslint-env es6*/

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

ZBOSmbOO1JVaI8uTYWmdGnNHCcrlRc0VOrwYlwIQBogqw04PXsPrbHmVJY4VQ3hmhuKc9n319pmz3X2oM4Y1/Q==

/*eslint init-declarations: ["error", "always"]*/
/*eslint-env es6*/

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

never

ExDEAtIpg2NhgG7EaZkd3H1dHA6S5XVB7cb32+aV48Cef35gw8ujjzOxeu67gUCh0lPUdMEC+xsFTTyA0NOAhw==

/*eslint init-declarations: ["error", "never"]*/
/*eslint-env es6*/

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

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

ExDEAtIpg2NhgG7EaZkd3IHZbtRh8LFYcxB0Ae7BTfeN/hN7XNdxU0/VO6LDEEh+40L3vSJXAgq5SRMjYiXr9w==

/*eslint init-declarations: ["error", "never"]*/
/*eslint-env es6*/

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

ExDEAtIpg2NhgG7EaZkd3CtVM+BxQnP/A5x/bE5anG66veg10Sd1sqdGhRCxzcdKQrGP89a+Ow+NfTw5Qqupi83JpJ098++LW87L23v4MOU=

ignoreForLoopInit

VeA9+JPEiHMwmwdvkvO9W3zOM8KTpQrJEXixfTazdqZVoc5K7IvAZhSUQc8nbifDMxod9wVjf+S43tYegOlZFjuTSX511Dhwf70T7VdzM5ndO1w5WkMZxZfSqOu529lC

/*eslint init-declarations: ["error", "never", { "ignoreForLoopInit": true }]*/
for (var i = 0; i < 1; i++) {}

何时不使用

gwdEY3Zaks87zyiksbdmi9d+A+Om2B0rk1st6gg104YaX/RdxfknS5dMUP1JULs3l+hAEVs3iIlZkh39PK2kFg==