space-before-blocks
在块之前需要或不允许间距(块之前间距)
在--fix
命令行上的选项可以自动修复一些被这条规则反映的问题。
一致性是任何风格指南的重要组成部分。虽然个人喜好在哪里放置块的大括号,它应该在整个项目中保持一致。使用不一致的风格会使读者无法看到代码的重要部分。
规则细节
此规则将强化块之前的间距一致性。它只适用于不以新行开始的块。
- 此规则忽略介于=>和块之间的间距。间距由arrow-spacing规则处理。
- 此规则忽略关键字和块之间的间距。间距由
keyword-spacing
规则处理。
选项
这条规则有一个参数。如果是的"always"
话,块必须至少有一个先前的空间。如果"never"
那么所有的块都不应该有前面的空间。如果功能块,关键字块和类需要不同的间距,则可以将一个可选配置对象作为规则参数进行传递,以分别配置这些情况。
( e.g. { "functions": "never", "keywords": "always", "classes": "always" }
)
默认是"always"
。
“always”
使用“always”选项的此规则的代码不正确的
示例:
/*eslint space-before-blocks: "error"*/
if (a){
b(
}
function a(){}
for (;;){
b(
}
try {} catch(a){}
class Foo{
constructor(){}
}
带有“always”选项的此规则的正确
代码示例:
/*eslint space-before-blocks: "error"*/
if (a) {
b(
}
if (a) {
b(
} else{ /*no error. this is checked by `keyword-spacing` rule.*/
c(
}
function a() {}
for (;;) {
b(
}
try {} catch(a) {}
“never”
使用“never”选项的此规则的代码不正确的
示例:
/*eslint space-before-blocks: ["error", "never"]*/
if (a) {
b(
}
function a() {}
for (;;) {
b(
}
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" }]*/
/*eslint-env es6*/
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" }]*/
/*eslint-env es6*/
for (;;) {
// ...
}
describe(function(){
// ...
}
class Foo {
constructor(){}
}
此规则配置时代码不正确的
示例{ "functions": "always", "keywords": "never", "classes": "never" }
:
/*eslint space-before-blocks: ["error", { "functions": "always", "keywords": "never", "classes": "never" }]*/
/*eslint-env es6*/
function a(){}
try {} catch(a) {}
class Foo {
constructor(){}
}
配置时对此规则的正确
代码示例{ "functions": "always", "keywords": "never", "classes": "never" }
:
/*eslint space-before-blocks: ["error", { "functions": "always", "keywords": "never", "classes": "never" }]*/
/*eslint-env es6*/
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" }]*/
/*eslint-env es6*/
class Foo{
constructor(){}
}
配置时对此规则的正确
代码示例{ "functions": "never", "keywords": "never", "classes": "always" }
:
/*eslint space-before-blocks: ["error", { "functions": "never", "keywords": "never", "classes": "always" }]*/
/*eslint-env es6*/
class Foo {
constructor(){}
}
何时不使用
如果您不关心块之前的间距一致性,则可以关闭此规则。
相关规则
- keyword-spacing
- arrow-spacing
- brace-style
版本
该规则在ESLint 0.9.0中引入。