版本

方括号内的空格

强制对象字面量的大括号和数组字面量的方括号内的一致空格。

虽然格式化偏好非常个人化,但许多风格指南要求或不允许方括号之间的空格

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" 选项时,此规则的错误代码示例

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" 选项时,此规则的错误代码示例

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];

何时不使用它

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

版本

此规则是在 ESLint v0.4.1 中引入的,并在 v1.0.0-rc-1 中移除。

更改语言