非常教程

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;

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

选项

该规则有两个选项:

  1. 一个字符串,必须是"always"(默认),在声明时强制执行初始化,或者在声明"never"中禁止初始化。此规则适用于varletconst变量,但是"never"对于const变量将被忽略,因为未分配的consts会生成分析错误。
  1. 进一步控制此规则行为的对象。目前,唯一可用的参数是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中引入。

资源

  • Rule source
  • Documentation source

规则 | Rules相关

1.accessor-pairs
2.array-bracket-newline
3.array-bracket-spacing
4.array-callback-return
5.array-element-newline
6.arrow-body-style
7.arrow-parens
8.arrow-spacing
9.block-scoped-var
10.block-spacing
11.brace-style
12.callback-return
13.camelcase
14.capitalized-comments
15.class-methods-use-this
16.comma-dangle
17.comma-spacing
18.comma-style
19.complexity
20.computed-property-spacing
21.consistent-return
22.consistent-this
23.constructor-super
24.curly
25.default-case
26.dot-location
27.dot-notation
28.eol-last
29.eqeqeq
30.for-direction
31.func-call-spacing
32.func-name-matching
33.func-names
34.func-style
35.function-paren-newline
36.generator-star
37.generator-star-spacing
38.getter-return
39.global-require
40.global-strict
41.guard-for-in
42.handle-callback-err
43.id-blacklist
44.id-length
45.id-match
46.implicit-arrow-linebreak
47.indent
48.indent-legacy
49.jsx-quotes
50.key-spacing
51.keyword-spacing
52.line-comment-position
53.linebreak-style
54.lines-around-comment
55.lines-around-directive
56.lines-between-class-members
57.max-depth
58.max-len
59.max-lines
60.max-nested-callbacks
61.max-params
62.max-statements
63.max-statements-per-line
64.multiline-comment-style
65.multiline-ternary
66.new-cap
67.new-parens
68.newline-after-var
69.newline-before-return
70.newline-per-chained-call
71.no-alert
72.no-array-constructor
73.no-arrow-condition
74.no-await-in-loop
75.no-bitwise
76.no-buffer-constructor
77.no-caller
78.no-case-declarations
79.no-catch-shadow
80.no-class-assign
81.no-comma-dangle
82.no-compare-neg-zero
83.no-cond-assign
84.no-confusing-arrow
85.no-console
86.no-const-assign
87.no-constant-condition
88.no-continue
89.no-control-regex
90.no-debugger
91.no-delete-var
92.no-div-regex
93.no-dupe-args
94.no-dupe-class-members
95.no-dupe-keys
96.no-duplicate-case
97.no-duplicate-imports
98.no-else-return
99.no-empty
100.no-empty-character-class
Eslint

ESLint 是一个代码规范和错误检查工具,有以下几个特性。所有东西都是可以插拔的。你可以调用任意的 rule api 或者 formatter api 去打包或者定义 rule or formatter。任意的 rule 都是独立的。没有特定的 coding style,你可以自己配置。

主页 https://eslint.org/
源码 https://github.com/eslint/eslint
发布版本 4.12.0

Eslint目录

1.指南 | Guide
2.规则 | Rules