Eslint
规则 | Rules

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"中禁止初始化。此规则适用于varletconst变量,但是"never"对于const变量将被忽略,因为未分配的consts会生成分析错误。

  • 进一步控制此规则行为的对象。目前,唯一可用的参数是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中引入。

资源