brace-style
大括号风格与编程中的缩进风格密切相关,它描述了大括号相对于其控制语句和主体的位置。世界上可能存在十几个,甚至更多的大括号风格。
唯一正确的大括号风格是 JavaScript 中最常见的大括号风格之一,其中块的左大括号与其对应的语句或声明放在同一行。例如
js
if (foo) {
bar();
} else {
baz();
}
唯一正确的大括号风格的一个常见变体被称为 Stroustrup,其中 if-else
结构中的 else
语句,以及 catch
和 finally
必须在其前面闭合大括号后的单独一行。例如
js
if (foo) {
bar();
}
else {
baz();
}
另一种风格被称为Allman,其中所有大括号都应该放在单独的行上,没有任何额外的缩进。例如
js
if (foo)
{
bar();
}
else
{
baz();
}
虽然没有哪种风格被认为比其他风格更好,但大多数开发人员都同意,在整个项目中保持一致的风格对于其长期可维护性很重要。
规则详情
此规则强制执行块的一致大括号风格。
选项
此规则有一个字符串选项
"1tbs"
(默认) 强制执行唯一正确的大括号风格"stroustrup"
强制执行 Stroustrup 风格"allman"
强制执行 Allman 风格
此规则有一个用于异常的对象选项
"allowSingleLine": true
(默认false
) 允许块的左大括号和右大括号在同一行
1tbs
使用默认 "1tbs"
选项时,此规则的不正确代码示例
js
/*eslint @stylistic/js/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"
选项时,此规则的正确代码示例
js
/*eslint @stylistic/js/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 }
选项时,此规则的正确代码示例
js
/*eslint @stylistic/js/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"
选项时,此规则的错误代码示例
js
/*eslint @stylistic/js/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"
选项时,此规则的正确代码示例
js
/*eslint @stylistic/js/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 }
选项时,此规则的正确代码示例
js
/*eslint @stylistic/js/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"
选项时,此规则的错误代码示例
js
/*eslint @stylistic/js/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"
选项时,此规则的正确代码示例
js
/*eslint @stylistic/js/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 }
选项时,此规则的正确代码示例
js
/*eslint @stylistic/js/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(); } }
正确
何时不使用它
如果您不想强制执行特定的括号样式,请不要启用此规则。