Versions

space-before-keywords

强化关键词前的一致间距。

(已移除)此规则在 ESLint v2.0 中移除并被 keyword-spacing 所取代。

(可修复)--fix 选项在命令行上自动修复该规则报告的问题。

关键词是 JavaScript 的语法元素,如 functionif。这些标识符对语言有特殊的意义,所以在代码编辑器中经常以不同的颜色出现。作为语言的一个重要部分,风格指南经常提到关键词周围应该使用的间距。例如,你可能有一个风格指南,说关键词前面应该总是有空格,这意味着 if-else 语句必须看起来像这样。

if (foo) {
    // ...
} else {
    // ...
}

当然,你也可以有一个风格指南,不允许在关键词前有空格。

规则细节

这条规则将强制执行关键字前的间距的一致性。

ifelseforwhiledoswitchthrowtrycatchfinallywithbreakcontinuereturnfunctionyieldclass、变量声明(letconstvar)和标签语句。

这个规则需要一个参数:"always""never"。如果是 "always",那么关键字前面必须至少有一个空格。如果 "never",那么在关键字 elsewhile(do…while)、finallycatch 前不允许有空格。默认值是 "always"

这个规则允许关键词前面有一个大括号({)。如果你想改变 这个行为,请考虑使用 block-spacing 规则。

使用此规则与默认的 "always" 选项的错误示例:

Open in Playground
/*eslint space-before-keywords: ["error", "always"]*/
/*eslint-env es6*/

if (foo) {
    // ...
}else {}

const foo = 'bar';let baz = 'qux';

var foo =function bar () {}

function bar() {
    if (foo) {return; }
}

使用此规则与默认的 "always" 选项的正确示例:

Open in Playground
/*eslint space-before-keywords: ["error", "always"]*/
/*eslint-env es6*/

if (foo) {
    // ...
} else {}

(function() {})()

<Foo onClick={function bar() {}} />

for (let foo of ['bar', 'baz', 'qux']) {}

使用此规则与 "never" 选项的错误示例:

Open in Playground
/*eslint space-before-keywords: ["error", "never"]*/

if (foo) {
    // ...
} else {}

do {

}
while (foo)

try {} finally {}

try {} catch(e) {}

使用此规则与 "never" 选项的正确示例:

Open in Playground
/*eslint space-before-keywords: ["error", "never"]*/

if (foo) {
    // ...
}else {}

do {}while (foo)

try {}finally {}

try{}catch(e) {}

何时不用

如果你不希望在关键词间距上执行一致性。

Version

This rule was introduced in ESLint v1.4.0 and removed in v2.0.0-beta.3.

更改语言