# space-in-parens

在括号内强制保持一致的间距

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

一些样式指南要求或不允许括号内有空格:

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

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

# 规则详情

此规则将通过在 ( 右侧和 ) 左侧禁止或要求一个或多个空格来直接在括号内强制执行一致的间距。

只要您不使用 "empty" 异常明确禁止空括号,就允许使用 ()

# 选项

此规则有两个选项:

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

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

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

# "never"

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

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

foo( );

foo( 'bar');
foo('bar' );
foo( 'bar' );

foo( /* bar */ );

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

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

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

foo();

foo('bar');

foo(/* bar */);

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

# "always"

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

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

foo( 'bar');
foo('bar' );
foo('bar');

foo(/* bar */);

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

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

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

foo();
foo( );

foo( 'bar' );

foo( /* bar */ );

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

# 异常

对象字面量可以用作第三个数组项来指定异常,键 "exceptions" 和数组作为值。这些例外在第一个选项的上下文中起作用。也就是说,如果 "always" 设置为强制间距,那么任何 "exception" 都将不允许间距。相反,如果 "never" 设置为不允许间距,则任何 "exception" 都将强制间距。

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

有以下例外情况:["{}", "[]", "()", "empty"]

# 空异常

空括号异常和行为:

  • always 允许 ()( )
  • never(默认)需要 ()
  • always 除了 empty 需要 ()
  • never 除了 empty 需要 ( ) (这里禁止没有空格的空括号)

# 示例

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

"empty" 异常涉及空括号,并且与其他异常的工作方式相同,颠倒了第一个选项。

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

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

foo();

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

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

foo( );

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

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

foo( );

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

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

foo();

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

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

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

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

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

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

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

# 何时不使用

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

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