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;
该规则旨在为变量初始化和声明带来一致性。
选项
该规则有两个选项:
- 一个字符串,必须是
"always"
(默认值),以在声明时强制初始化,或"never"
以在声明期间禁止初始化。此规则适用于var
、let
和const
变量,但const
变量会忽略"never"
,因为未分配的const
会产生解析错误。 - 进一步控制此规则行为的对象。目前,唯一可用的参数是
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==