# space-before-blocks

在块之前强制保持一致的间距

一些该规则报告的问题可以通过 --fix 命令行选项 自动修复

一致性是任何风格指南的重要组成部分。虽然将块的左大括号放在哪里是个人喜好,但它应该在整个项目中保持一致。风格不一致会分散读者看到代码重要部分的注意力。

# 规则详情

此规则将强制块前间距的一致性。它仅适用于不在新行开始的块。

  • 此规则忽略 => 和块之间的间距。间距由 arrow-spacing 规则处理。
  • 此规则忽略关键字和块之间的间距。间距由 keyword-spacing 规则处理。
  • 此规则忽略开关盒的 : 和块之间的间距。间距由 switch-colon-spacing 规则处理。

# 选项

这条规则有一个论据。如果是 "always",那么块必须总是有至少一个前面的空格。如果 "never",那么所有块都不应该有任何前面的空格。如果功能块、关键字块和类需要不同的间距,可以将可选的配置对象作为规则参数传递,以分别配置案例。如果配置对象中的任何值为 "off",则不会对这种类型的块强制执行任何样式。

(例如 { "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();
}

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) {
    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(){}
}

# 何时不使用

如果您不关心块前间距的一致性,您可以关闭此规则。

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