版本

space-in-brackets

強制物件字面值的大括號內和陣列字面值的方括號內的間距一致。

雖然格式化偏好非常個人化,但許多樣式指南會要求或不允許在括號之間有空格

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 中移除。

變更語言