space-before-blocks
强制执行块之前的空格一致性
此规则报告的一些问题可以通过 --fix
命令行 选项自动修复。
此规则在 ESLint v8.53.0 中已被 **弃用**。请使用 相应的规则 在 @stylistic/eslint-plugin-js
中。
一致性是任何样式指南的重要组成部分。虽然在何处放置块的开括号是个人喜好,但它应该在整个项目中保持一致。不一致的样式会分散读者对代码重要部分的注意力。
规则详情
此规则将强制执行块之前的空格一致性。它仅应用于不在新行开始的块。
- 此规则忽略
=>
和块之间的空格。空格由arrow-spacing
规则处理。 - 此规则忽略关键字和块之间的空格。空格由
keyword-spacing
规则处理。 - 此规则忽略 switch case 的
:
和块之间的空格。空格由switch-colon-spacing
规则处理。
选项
此规则接受一个参数。如果它是 "always"
,则块必须始终至少有一个前导空格。如果 "never"
,则所有块都不应有任何前导空格。如果希望函数块、关键字块和类有不同的空格,可以将一个可选的配置对象作为规则参数传递来分别配置这些情况。如果配置对象中的任何值是 "off"
,则不会对该类型的块强制执行任何样式。
(例如 { "functions": "never", "keywords": "always", "classes": "always" }
)
默认值为 "always"
。
“always”
此规则使用 “always” 选项时的 **错误** 代码示例
/*eslint space-before-blocks: "error"*/
if (a)
function a()
for (;;)
try {} catch(a)
class Foo
此规则使用 "always"
选项时的 **正确** 代码示例
/*eslint space-before-blocks: "error"*/
if (a) {
b();
}
if (a) {
b();
} else{ /*no error. this is checked by `keyword-spacing` rule.*/
c();
}
class C {
static{} /*no error. this is checked by `keyword-spacing` rule.*/
}
function a() {}
for (;;) {
b();
}
try {} catch(a) {}
“never”
此规则使用 "never"
选项时的 **错误** 代码示例
/*eslint space-before-blocks: ["error", "never"]*/
if (a)
function a()
for (;;)
try {} catch(a)
此规则使用 "never"
选项时的 **正确** 代码示例
/*eslint space-before-blocks: ["error", "never"]*/
if (a){
b();
}
function a(){}
for (;;){
b();
}
try{} catch(a){}
class Foo{
constructor(){}
}
此规则配置为 { "functions": "never", "keywords": "always", "classes": "never" }
时的 **错误** 代码示例
/*eslint space-before-blocks: ["error", { "functions": "never", "keywords": "always", "classes": "never" }]*/
function a()
try {} catch(a)
class Foo{
constructor()
}
此规则配置为 { "functions": "never", "keywords": "always", "classes": "never" }
时的 **正确** 代码示例
/*eslint space-before-blocks: ["error", { "functions": "never", "keywords": "always", "classes": "never" }]*/
for (;;) {
// ...
}
describe(function(){
// ...
});
class Foo{
constructor(){}
}
此规则配置为 { "functions": "always", "keywords": "never", "classes": "never" }
时的 **错误** 代码示例
/*eslint space-before-blocks: ["error", { "functions": "always", "keywords": "never", "classes": "never" }]*/
function a()
try {} catch(a)
class Foo
此规则配置为 { "functions": "always", "keywords": "never", "classes": "never" }
时的 **正确** 代码示例
/*eslint space-before-blocks: ["error", { "functions": "always", "keywords": "never", "classes": "never" }]*/
if (a){
b();
}
var a = function() {}
class Foo{
constructor() {}
}
此规则配置为 { "functions": "never", "keywords": "never", "classes": "always" }
时的 **错误** 代码示例
/*eslint space-before-blocks: ["error", { "functions": "never", "keywords": "never", "classes": "always" }]*/
class Foo
此规则配置为 { "functions": "never", "keywords": "never", "classes": "always" }
时的 **正确** 代码示例
/*eslint space-before-blocks: ["error", { "functions": "never", "keywords": "never", "classes": "always" }]*/
class Foo {
constructor(){}
}
何时不使用它
如果您不关心块之前的空格一致性,可以关闭此规则。
相关规则
版本
此规则在 ESLint v0.9.0 中引入。