首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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中引入。

资源

扫码关注腾讯云开发者

领取腾讯云代金券