版本

brace-style

强制执行块的统一花括号风格

🔧 可修复

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

此规则已在 ESLint v8.53.0 中弃用。请使用 相应规则@stylistic/eslint-plugin-js 中。

花括号风格与编程中的 缩进风格 密切相关,描述了花括号相对于其控制语句和主体的位置。在世界上可能有十几个,如果不是更多的话,花括号风格。

一种真正的花括号风格是 JavaScript 中最常见的几种花括号风格之一,其中块的左花括号放在其对应语句或声明的同一行。例如

if (foo) {
  bar();
} else {
  baz();
}

一种真正花括号风格的常见变体称为 Stroustrup,其中 if-else 结构中的 else 语句以及 catchfinally 必须在前面的右花括号之后的单独一行。例如

if (foo) {
  bar();
}
else {
  baz();
}

另一种风格称为 Allman,其中所有花括号都应位于它们自己的行上,没有任何额外的缩进。例如

if (foo)
{
  bar();
}
else
{
  baz();
}

虽然没有一种风格被认为比另一种更好,但大多数开发人员都同意在一个项目中保持一致的风格对于其长期的可维护性很重要。

规则详细信息

此规则强制执行块的统一花括号风格。

选项

此规则有一个字符串选项

  • "1tbs" (默认) 强制执行一种真正的花括号风格
  • "stroustrup" 强制执行 Stroustrup 风格
  • "allman" 强制执行 Allman 风格

此规则有一个用于异常的对象选项

  • "allowSingleLine": true (默认 false) 允许块的左花括号和右花括号位于同一

1tbs

使用默认 "1tbs" 选项时,此规则的不正确代码示例

在游乐场中打开
/*eslint brace-style: "error"*/

function foo()
{
  return true;
}

if (foo)
{
  bar();
}

try
{
  somethingRisky();
} catch(e)
{
  handleError();
}

if (foo) {
  bar();
}
else {
  baz();
}

class C
{
    static
    {
        foo();
    }
}

使用默认 "1tbs" 选项时,此规则的正确代码示例

在游乐场中打开
/*eslint brace-style: "error"*/

function foo() {
  return true;
}

if (foo) {
  bar();
}

if (foo) {
  bar();
} else {
  baz();
}

try {
  somethingRisky();
} catch(e) {
  handleError();
}

class C {
    static {
        foo();
    }
}

// when there are no braces, there are no problems
if (foo) bar();
else if (baz) boom();

使用 "1tbs", { "allowSingleLine": true } 选项时,此规则的正确代码示例

在游乐场中打开
/*eslint brace-style: ["error", "1tbs", { "allowSingleLine": true }]*/

function nop() { return; }

if (foo) { bar(); }

if (foo) { bar(); } else { baz(); }

try { somethingRisky(); } catch(e) { handleError(); }

if (foo) { baz(); } else {
  boom();
}

if (foo) { baz(); } else if (bar) {
  boom();
}

if (foo) { baz(); } else
if (bar) {
  boom();
}

if (foo) { baz(); } else if (bar) {
  boom();
}

try { somethingRisky(); } catch(e) {
  handleError();
}

class C {
    static { foo(); }
}

class D { static { foo(); } }

stroustrup

使用 "stroustrup" 选项时,此规则的不正确代码示例

在游乐场中打开
/*eslint brace-style: ["error", "stroustrup"]*/

function foo()
{
  return true;
}

if (foo)
{
  bar();
}

try
{
  somethingRisky();
} catch(e)
{
  handleError();
}

class C
{
    static
    {
        foo();
    }
}

if (foo) {
  bar();
} else {
  baz();
}

使用 "stroustrup" 选项时,此规则的正确代码示例

在游乐场中打开
/*eslint brace-style: ["error", "stroustrup"]*/

function foo() {
  return true;
}

if (foo) {
  bar();
}

if (foo) {
  bar();
}
else {
  baz();
}

try {
  somethingRisky();
}
catch(e) {
  handleError();
}

class C {
    static {
        foo();
    }
}

// when there are no braces, there are no problems
if (foo) bar();
else if (baz) boom();

使用 "stroustrup", { "allowSingleLine": true } 选项时,此规则的正确代码示例

在游乐场中打开
/*eslint brace-style: ["error", "stroustrup", { "allowSingleLine": true }]*/

function nop() { return; }

if (foo) { bar(); }

if (foo) { bar(); }
else { baz(); }

try { somethingRisky(); }
catch(e) { handleError(); }

class C {
    static { foo(); }
}

class D { static { foo(); } }

allman

使用 "allman" 选项时,此规则的不正确代码示例

在游乐场中打开
/*eslint brace-style: ["error", "allman"]*/

function foo() {
  return true;
}

if (foo)
{
  bar(); }

try
{
  somethingRisky();
} catch(e)
{
  handleError();
}

class C {
    static {
        foo();
    }
}

if (foo) {
  bar();
} else {
  baz();
}

使用 "allman" 选项时,此规则的正确代码示例

在游乐场中打开
/*eslint brace-style: ["error", "allman"]*/

function foo()
{
  return true;
}

if (foo)
{
  bar();
}

if (foo)
{
  bar();
}
else
{
  baz();
}

try
{
  somethingRisky();
}
catch(e)
{
  handleError();
}

class C
{
    static
    {
        foo();
    }
}

// when there are no braces, there are no problems
if (foo) bar();
else if (baz) boom();

使用 "allman", { "allowSingleLine": true } 选项时,此规则的正确代码示例

在游乐场中打开
/*eslint brace-style: ["error", "allman", { "allowSingleLine": true }]*/

function nop() { return; }

if (foo) { bar(); }

if (foo) { bar(); }
else { baz(); }

try { somethingRisky(); }
catch(e) { handleError(); }

class C
{
    static { foo(); }

    static
    { foo(); }
}

class D { static { foo(); } }

何时不使用它

如果您不想强制执行特定的花括号风格,请不要启用此规则。

版本

此规则是在 ESLint v0.0.7 中引入的。

进一步阅读

资源

更改语言