space-in-brackets
括号中的空格:在对象文字的大括号和数组文字的括号内强制执行一致的间距
这条规则在ESLint v1.0中被删除
,并被object-curly-spacing和array-bracket-spacing规则取代
。
虽然格式化首选项非常个人化,但一些样式指南需要或不允许括号之间的空格:
var obj = { foo: 'bar' };
var arr = [ 'foo', 'bar' ];
foo[ 'bar' ];
var obj = {foo: 'bar'};
var arr = ['foo', 'bar'];
foo['bar'];
规则细节
此规则旨在通过禁止括号内的空格和其他令牌或强制空格来维持方括号内部空间的一致性。与此相邻的值由新行分隔的括号不属于此规则,因为这是一种常见模式。用作数组中第一个或最后一个元素的对象文字也被忽略。
选项
该规则有两种选择:
"always"
在对象和数组文字中强制使用空格
"never"
在对象和数组文字内强制使用零空格(默认)
根据您的编码惯例,您可以通过在您的配置中指定它来选择任一选项:
"space-in-brackets": ["error", "always"]
“never”
此规则的默认代码错误
代码示例"never"
:
/*eslint-env es6*/
foo[ 'bar' ];
foo['bar' ];
var arr = [ 'foo', 'bar' ];
var arr = ['foo', 'bar' ];
var arr = [ ['foo'], 'bar'];
var arr = [[ 'foo' ], 'bar'];
var arr = ['foo',
'bar'
];
var obj = { 'foo': 'bar' };
var obj = {'foo': 'bar' };
var obj = { baz: {'foo': 'qux'}, bar};
var obj = {baz: { 'foo': 'qux' }, bar};
具有默认选项的此规则的正确
代码示例"never"
:
// When options are ["error", "never"]
foo['bar'];
foo[
'bar'
];
foo[
'bar'];
var arr = [];
var arr = ['foo', 'bar', 'baz'];
var arr = [['foo'], 'bar', 'baz'];
var arr = [
'foo',
'bar',
'baz'
];
var arr = [
'foo',
'bar'];
var obj = {'foo': 'bar'};
var obj = {'foo': {'bar': 'baz'}, 'qux': 'quxx'};
var obj = {
'foo': 'bar'
};
var obj = {'foo': 'bar'
};
var obj = {
'foo':'bar'};
var obj = {};
“always”
此规则的错误
代码示例包含以下"always"
选项:
/*eslint-env es6*/
foo['bar'];
foo['bar' ];
foo[ 'bar'];
var arr = ['foo', 'bar'];
var arr = ['foo', 'bar' ];
var arr = [ ['foo'], 'bar' ];
var arr = ['foo',
'bar'
];
var arr = [
'foo',
'bar'];
var obj = {'foo': 'bar'};
var obj = {'foo': 'bar' };
var obj = { baz: {'foo': 'qux'}, bar};
var obj = {baz: { 'foo': 'qux' }, bar};
var obj = {'foo': 'bar'
};
var obj = {
'foo':'bar'};
此规则的正确
代码示例包含以下"always"
选项:
foo[ 'bar' ];
foo[
'bar'
];
var arr = [];
var arr = [ 'foo', 'bar', 'baz' ];
var arr = [ [ 'foo' ], 'bar', 'baz' ];
var arr = [
'foo',
'bar',
'baz'
];
var obj = {};
var obj = { 'foo': 'bar' };
var obj = { 'foo': { 'bar': 'baz' }, 'qux': 'quxx' };
var obj = {
'foo': 'bar'
};
请注意,"always"
有一个特殊情况,{}
并且[]
不被视为问题。
例外
对象字面量可以用作第三个数组项以指定间隔异常。这些例外在第一种选择的情况下起作用。也就是说,如果"always"
设置为强制执行间隔并且设置了异常false
,则对于与该异常匹配的个案,它将不允许间距。同样,如果"never"
设置为禁止间距,并且设置了异常true
,则会为匹配该例外的情况强制执行间距。
您可以添加如下例外:
如果有"always"
选项,请设置例外false
以启用:
"space-in-brackets": ["error", "always", {
"singleValue": false,
"objectsInArrays": false,
"arraysInArrays": false,
"arraysInObjects": false,
"objectsInObjects": false,
"propertyName": false
}]
如果有"never"
选项,请设置例外true
以启用:
"space-in-brackets": ["error", "never", {
"singleValue": true,
"objectsInArrays": true,
"arraysInArrays": true,
"arraysInObjects": true,
"objectsInObjects": true,
"propertyName": true
}]
以下例外情况可用:
singleValue
设置数组中方括号内的单个值的间距。
objectsInArrays
设置数组中第一个或最后一个元素的大括号和方括号之间的间距。
arraysInArrays
设置数组中第一个或最后一个元素的数组文字的方括号之间的间距。
arraysInObjects
设置方括号和作为对象中最后一个元素的数组文本的大括号之间的间距。
objectsInObjects
设置作为对象中最后一个元素的对象字面大括号和包含对象的大括号之间的间距。
propertyName
在计算的成员表达式的方括号中设置间距。
在以下每个示例中,"always"
都假定该选项。
此规则不正确
的例子代码,"singleValue"
被设置为false
:
var foo = [ 'foo' ];
var foo = [ 'foo'];
var foo = ['foo' ];
var foo = [ 1 ];
var foo = [ 1];
var foo = [1 ];
var foo = [ [ 1, 2 ] ];
var foo = [ { 'foo': 'bar' } ];
"singleValue"
设置为false
时,此规则的正确
代码示例
var foo = ['foo'];
var foo = [1];
var foo = [[ 1, 1 ]];
var foo = [{ 'foo': 'bar' }];
"objectsInArrays"
设置为false
时的错误
代码示例:
var arr = [ { 'foo': 'bar' } ];
var arr = [ {
'foo': 'bar'
} ]
"objectsInArrays"
设置为false
时的正确的
代码示例
var arr = [{ 'foo': 'bar' }];
var arr = [{
'foo': 'bar'
}];
"arraysInArrays"
设置为false
时的错误
代码示例
var arr = [ [ 1, 2 ], 2, 3, 4 ];
var arr = [ [ 1, 2 ], 2, [ 3, 4 ] ];
"arraysInArrays"
设置为false
时的正确的
代码示例
var arr = [[ 1, 2 ], 2, 3, 4 ];
var arr = [[ 1, 2 ], 2, [ 3, 4 ]];
"arraysInObjects"
设置为false
时的错误
代码示例
var obj = { "foo": [ 1, 2 ] };
var obj = { "foo": [ "baz", "bar" ] };
"arraysInObjects"
设置为false
时的正确的
代码示例
var obj = { "foo": [ 1, 2 ]};
var obj = { "foo": [ "baz", "bar" ]};
"objectsInObjects"
设置为false
时的错误
代码示例
var obj = { "foo": { "baz": 1, "bar": 2 } };
var obj = { "foo": [ "baz", "bar" ], "qux": { "baz": 1, "bar": 2 } };
"objectsInObjects"
设置为时false
的正确的
代码示例:
var obj = { "foo": { "baz": 1, "bar": 2 }};
var obj = { "foo": [ "baz", "bar" ], "qux": { "baz": 1, "bar": 2 }};
"propertyName"
设置为false
时的错误
代码示例:
var foo = obj[ 1 ];
var foo = obj[ bar ];
"propertyName"
设置为时false
时的正确的
代码示例:
var foo = obj[bar];
var foo = obj[0, 1];
何时不使用
如果您不关心方括号之间的间距的一致性,可以关闭此规则。
相关规则
- array-bracket-spacing
- object-curly-spacing
- space-in-parens
- computed-property-spacing
版本
此规则在ESLint 0.4.1中引入,并在1.0.0-rc-1中删除。