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
变量,但是"never"
对于const
变量将被忽略,因为未分配的const
s会生成分析错误。
- 进一步控制此规则行为的对象。目前,唯一可用的参数是
ignoreForLoopInit
,它指示在设置for
时"never"
是否允许在声明中对声明进行初始化,因为这是一个非常典型的用例。
您可以按如下所示配置规则:
变量必须在声明时初始化(默认)
{
"init-declarations": ["error", "always"],
}
变量不能在声明时初始化
{
"init-declarations": ["error", "never"]
}
变量不能在声明时被初始化,除了允许的for循环
{
"init-declarations": ["error", "never", { "ignoreForLoopInit": true }]
}
总是
不正确的
代码为默认"always"
选项的示例:
/*eslint init-declarations: ["error", "always"]*/
/*eslint-env es6*/
function foo() {
var bar;
let baz;
}
默认选项的正确
代码示例"always"
:
/*eslint init-declarations: ["error", "always"]*/
/*eslint-env es6*/
function foo() {
var bar = 1;
let baz = 2;
const qux = 3;
}
决不
选项的错误
代码示例"never"
:
/*eslint init-declarations: ["error", "never"]*/
/*eslint-env es6*/
function foo() {
var bar = 1;
let baz = 2;
for (var i = 0; i < 1; i++) {}
}
选项的正确
代码示例"never"
:
/*eslint init-declarations: ["error", "never"]*/
/*eslint-env es6*/
function foo() {
var bar;
let baz;
const buzz = 1;
}
该"never"
选项忽略const
变量初始化。
ignoreForLoopInit
选项的正确
代码示例"never", { "ignoreForLoopInit": true }
:
/*eslint init-declarations: ["error", "never", { "ignoreForLoopInit": true }]*/
for (var i = 0; i < 1; i++) {}
何时不使用它
当你对如何初始化你的变量无动于衷。
版本
该规则在 ESLint 1.0.0-rc-1中引入。