非常教程

Eslint参考手册

规则 | Rules

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

资源

  • Documentation source

规则 | Rules相关

1.accessor-pairs
2.array-bracket-newline
3.array-bracket-spacing
4.array-callback-return
5.array-element-newline
6.arrow-body-style
7.arrow-parens
8.arrow-spacing
9.block-scoped-var
10.block-spacing
11.brace-style
12.callback-return
13.camelcase
14.capitalized-comments
15.class-methods-use-this
16.comma-dangle
17.comma-spacing
18.comma-style
19.complexity
20.computed-property-spacing
21.consistent-return
22.consistent-this
23.constructor-super
24.curly
25.default-case
26.dot-location
27.dot-notation
28.eol-last
29.eqeqeq
30.for-direction
31.func-call-spacing
32.func-name-matching
33.func-names
34.func-style
35.function-paren-newline
36.generator-star
37.generator-star-spacing
38.getter-return
39.global-require
40.global-strict
41.guard-for-in
42.handle-callback-err
43.id-blacklist
44.id-length
45.id-match
46.implicit-arrow-linebreak
47.indent
48.indent-legacy
49.init-declarations
50.jsx-quotes
51.key-spacing
52.keyword-spacing
53.line-comment-position
54.linebreak-style
55.lines-around-comment
56.lines-around-directive
57.lines-between-class-members
58.max-depth
59.max-len
60.max-lines
61.max-nested-callbacks
62.max-params
63.max-statements
64.max-statements-per-line
65.multiline-comment-style
66.multiline-ternary
67.new-cap
68.new-parens
69.newline-after-var
70.newline-before-return
71.newline-per-chained-call
72.no-alert
73.no-array-constructor
74.no-arrow-condition
75.no-await-in-loop
76.no-bitwise
77.no-buffer-constructor
78.no-caller
79.no-case-declarations
80.no-catch-shadow
81.no-class-assign
82.no-comma-dangle
83.no-compare-neg-zero
84.no-cond-assign
85.no-confusing-arrow
86.no-console
87.no-const-assign
88.no-constant-condition
89.no-continue
90.no-control-regex
91.no-debugger
92.no-delete-var
93.no-div-regex
94.no-dupe-args
95.no-dupe-class-members
96.no-dupe-keys
97.no-duplicate-case
98.no-duplicate-imports
99.no-else-return
100.no-empty
Eslint

ESLint 是一个代码规范和错误检查工具,有以下几个特性。所有东西都是可以插拔的。你可以调用任意的 rule api 或者 formatter api 去打包或者定义 rule or formatter。任意的 rule 都是独立的。没有特定的 coding style,你可以自己配置。

主页 https://eslint.org/
源码 https://github.com/eslint/eslint
发布版本 4.12.0

Eslint目录

1.指南 | Guide
2.规则 | Rules