版本

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

變更語言