# space-before-keywords

在关键字之前强制执行一致的间距。

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

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

关键字是 JavaScript 的语法元素,例如 functionif。这些标识符对语言具有特殊意义,因此在代码编辑器中经常以不同的颜色出现。作为语言的重要组成部分,样式指南通常指的是应该在关键字周围使用的间距。例如,您可能有一个样式指南说关键字应该始终以空格开头,这意味着 if-else 语句必须如下所示:

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

当然,您也可以有一个不允许关键字前有空格的样式指南。

# 规则详情

此规则将强制关键字 ifelseforwhiledoswitchthrowtrycatchfinallywithbreakcontinuereturnfunctionyieldclass 和变量声明(letconst)之前的间距保持一致, var) 和标签声明。

该规则采用一个参数:"always""never"。如果 "always" 则关键字前面必须至少有一个空格。如果是 "never",则在关键字 elsewhile(do...while)、finallycatch 之前不允许有空格。默认值为 "always"

此规则将允许关键字前面有一个左大括号 ({)。如果您希望更改此行为,请考虑使用 block-spacing 规则。

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

/*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" 选项的正确代码示例:

/*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" 选项的错误代码示例:

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

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

do {

}
while (foo)

try {} finally {}

try {} catch(e) {}

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

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

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

do {}while (foo)

try {}finally {}

try{}catch(e) {}

# 何时不使用

如果您不希望强制关键字间距的一致性。

Last Updated: 5/13/2023, 8:55:38 PM