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