跳至内容

@stylistic/

space-in-parens

一些风格指南要求或禁止在圆括号内使用空格

js
foo( 'bar' );
var x = ( 1 + 2 ) * 3;

foo('bar');
var x = (1 + 2) * 3;

规则详情

此规则通过禁止或要求在 ( 右侧和 ) 左侧使用一个或多个空格,来强制在圆括号内使用一致的间距。

只要您没有使用 "empty" 异常显式禁止空圆括号,() 将被允许。

选项

此规则有两个选项

  • "never" (默认) 强制在圆括号内使用零个空格
  • "always" 强制在圆括号内使用一个空格

根据您的编码约定,您可以通过在配置中指定来选择任一选项

json
"space-in-parens": ["error", "always"]

"never"

使用默认 "never" 选项时,此规则的错误代码示例

js
/*eslint @stylistic/space-in-parens: ["error", "never"]*/

foo(
);
foo(
'bar');
foo('bar'
);
foo(
'bar'
);
foo(
/* bar */
);
var foo = (
1 + 2
) * 3;
(
function () { return 'bar'; }()
);
incorrect

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

js
/*eslint @stylistic/space-in-parens: ["error", "never"]*/

foo();

foo('bar');

foo(/* bar */);

var foo = (1 + 2) * 3;
(function () { return 'bar'; }());
correct

"always"

使用 "always" 选项时,此规则的错误代码示例

js
/*eslint @stylistic/space-in-parens: ["error", "always"]*/

foo( 'bar'
)
;
foo
(
'bar' );
foo
(
'bar'
)
;
foo
(
/* bar */
)
;
var foo =
(
1 + 2
)
* 3;
(
function () { return 'bar'; }()
)
;
incorrect

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

js
/*eslint @stylistic/space-in-parens: ["error", "always"]*/

foo();
foo( );

foo( 'bar' );

foo( /* bar */ );

var foo = ( 1 + 2 ) * 3;
( function () { return 'bar'; }() );
correct

异常

可以使用对象字面量作为第三个数组项来指定异常,其中键为 "exceptions",值为数组。这些异常在第一个选项的上下文中起作用。也就是说,如果设置 "always" 来强制使用空格,那么任何“异常”都会禁止使用空格。相反,如果设置 "never" 来禁止使用空格,那么任何“异常”都会强制使用空格。

请注意,此规则仅强制在圆括号内使用空格;它不会检查花括号或方括号内的空格,但仅当它们与开括号或闭括号相邻时,才会强制或禁止使用这些括号的空格。

以下例外可用:["{}", "[]", "()", "empty"]

空异常

空括号异常和行为

  • always 允许 ()( )
  • never(默认)需要 ()
  • alwaysempty 外需要 ()
  • neverempty 外需要 ( )(这里禁止没有空格的空括号)

示例

使用 "never", { "exceptions": ["{}"] } 选项时,此规则的错误代码示例

js
/*eslint @stylistic/space-in-parens: ["error", "never", { "exceptions": ["{}"] }]*/

foo
(
{bar: 'baz'}
)
;
foo(1, {bar: 'baz'}
)
;
incorrect

使用 "never", { "exceptions": ["{}"] } 选项时,此规则的正确代码示例

js
/*eslint @stylistic/space-in-parens: ["error", "never", { "exceptions": ["{}"] }]*/

foo( {bar: 'baz'} );
foo(1, {bar: 'baz'} );
correct

使用 "always", { "exceptions": ["{}"] } 选项时,此规则的错误代码示例

js
/*eslint @stylistic/space-in-parens: ["error", "always", { "exceptions": ["{}"] }]*/

foo(
{bar: 'baz'}
);
foo( 1, {bar: 'baz'}
);
incorrect

使用 "always", { "exceptions": ["{}"] } 选项时,此规则的正确代码示例

js
/*eslint @stylistic/space-in-parens: ["error", "always", { "exceptions": ["{}"] }]*/

foo({bar: 'baz'});
foo( 1, {bar: 'baz'});
correct

使用 "never", { "exceptions": ["[]"] } 选项时,此规则的错误代码示例

js
/*eslint @stylistic/space-in-parens: ["error", "never", { "exceptions": ["[]"] }]*/

foo
(
[bar, baz]
)
;
foo
(
[bar, baz], 1);
incorrect

使用 "never", { "exceptions": ["[]"] } 选项时,此规则的正确代码示例

js
/*eslint @stylistic/space-in-parens: ["error", "never", { "exceptions": ["[]"] }]*/

foo( [bar, baz] );
foo( [bar, baz], 1);
correct

使用 "always", { "exceptions": ["[]"] } 选项时,此规则的错误代码示例

js
/*eslint @stylistic/space-in-parens: ["error", "always", { "exceptions": ["[]"] }]*/

foo(
[bar, baz]
);
foo(
[bar, baz], 1 );
incorrect

使用 "always", { "exceptions": ["[]"] } 选项时,此规则的正确代码示例

js
/*eslint @stylistic/space-in-parens: ["error", "always", { "exceptions": ["[]"] }]*/

foo([bar, baz]);
foo([bar, baz], 1 );
correct

使用 "never", { "exceptions": ["()"] }] 选项时,此规则的错误代码示例

js
/*eslint @stylistic/space-in-parens: ["error", "never", { "exceptions": ["()"] }]*/

foo
(
(1 + 2)
)
;
foo
(
(1 + 2), 1);
foo(bar()
)
;
incorrect

使用 "never", { "exceptions": ["()"] }] 选项时,此规则的正确代码示例

js
/*eslint @stylistic/space-in-parens: ["error", "never", { "exceptions": ["()"] }]*/

foo( (1 + 2) );
foo( (1 + 2), 1);
foo(bar() );
correct

使用 "always", { "exceptions": ["()"] }] 选项时,此规则的错误代码示例

js
/*eslint @stylistic/space-in-parens: ["error", "always", { "exceptions": ["()"] }]*/

foo(
( 1 + 2 )
);
foo(
( 1 + 2 ), 1 );
incorrect

使用 "always", { "exceptions": ["()"] }] 选项时,此规则的正确代码示例

js
/*eslint @stylistic/space-in-parens: ["error", "always", { "exceptions": ["()"] }]*/

foo(( 1 + 2 ));
foo(( 1 + 2 ), 1 );
correct

"empty" 例外涉及空括号,并且与其他例外一样,反转第一个选项。

使用 "never", { "exceptions": ["empty"] }] 选项时,此规则的错误代码示例

js
/*eslint @stylistic/space-in-parens: ["error", "never", { "exceptions": ["empty"] }]*/

foo
(
)
;
incorrect

使用 "never", { "exceptions": ["empty"] }] 选项时,此规则的正确代码示例

js
/*eslint @stylistic/space-in-parens: ["error", "never", { "exceptions": ["empty"] }]*/

foo( );
correct

使用 "always", { "exceptions": ["empty"] }] 选项时,此规则的错误代码示例

js
/*eslint @stylistic/space-in-parens: ["error", "always", { "exceptions": ["empty"] }]*/

foo(
);
incorrect

使用 "always", { "exceptions": ["empty"] }] 选项时,此规则的正确代码示例

js
/*eslint @stylistic/space-in-parens: ["error", "always", { "exceptions": ["empty"] }]*/

foo();
correct

您可以在 "exceptions" 数组中包含多个条目。

使用 "always", { "exceptions": ["{}", "[]"] }] 选项时,此规则的错误代码示例

js
/*eslint @stylistic/space-in-parens: ["error", "always", { "exceptions": ["{}", "[]"] }]*/

bar(
{bar:'baz'}
);
baz( 1, [1,2]
);
foo(
{bar: 'baz'}, [1, 2]
);
incorrect

使用 "always", { "exceptions": ["{}", "[]"] }] 选项时,此规则的正确代码示例

js
/*eslint @stylistic/space-in-parens: ["error", "always", { "exceptions": ["{}", "[]"] }]*/

bar({bar:'baz'});
baz( 1, [1,2]);
foo({bar: 'baz'}, [1, 2]);
correct

何时不使用它

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