# 空格
19.1 tab用4个空格. eslint:
indent
(opens new window)// good function foo() { ∙∙∙∙const name; }
19.2 在大括号前空一格。 eslint:
space-before-blocks
(opens new window)// bad function test(){ console.log('test'); } // good function test() { console.log('test'); } // bad dog.set('attr',{ age: '1 year', breed: 'Bernese Mountain Dog', }); // good dog.set('attr', { age: '1 year', breed: 'Bernese Mountain Dog', });
19.3 在控制语句(
if
,while
等)的圆括号前空一格。在函数调用和定义时,参数列表和函数名之间不空格。 eslint:keyword-spacing
(opens new window)// bad if(isJedi) { fight (); } // good if (isJedi) { fight(); } // bad function fight () { console.log ('Swooosh!'); } // good function fight() { console.log('Swooosh!'); }
19.4 用空格来隔开运算符。 eslint:
space-infix-ops
(opens new window)// bad const x=y+5; // good const x = y + 5;
19.6 当出现长的方法链(>2个)时用缩进。用点开头强调该行是一个方法调用,而不是一个新的语句。eslint:
newline-per-chained-call
(opens new window)no-whitespace-before-property
(opens new window)// bad $('#items').find('.selected').highlight().end().find('.open').updateCount(); // bad $('#items'). find('.selected'). highlight(). end(). find('.open'). updateCount(); // good $('#items') .find('.selected') .highlight() .end() .find('.open') .updateCount(); // bad const leds = stage.selectAll('.led').data(data).enter().append('svg:svg').classed('led', true) .attr('width', (radius + margin) * 2).append('svg:g') .attr('transform', `translate(${radius + margin},${radius + margin})`) .call(tron.led); // good const leds = stage.selectAll('.led') .data(data) .enter().append('svg:svg') .classed('led', true) .attr('width', (radius + margin) * 2) .append('svg:g') .attr('transform', `translate(${radius + margin},${radius + margin})`) .call(tron.led); // good const leds = stage.selectAll('.led').data(data);
19.7 在一个代码块后下一条语句前空一行。
// bad if (foo) { return bar; } return baz; // good if (foo) { return bar; } return baz; // bad const obj = { foo() { }, bar() { }, }; return obj; // good const obj = { foo() { }, bar() { }, }; return obj; // bad const arr = [ function foo() { }, function bar() { }, ]; return arr; // good const arr = [ function foo() { }, function bar() { }, ]; return arr;
19.8 不要用空白行填充块。 eslint:
padded-blocks
(opens new window)// bad function bar() { console.log(foo); } // also bad if (baz) { console.log(qux); } else { console.log(foo); } // good function bar() { console.log(foo); } // good if (baz) { console.log(qux); } else { console.log(foo); }
19.9 圆括号里不要加空格。 eslint:
space-in-parens
(opens new window)// bad function bar( foo ) { return foo; } // good function bar(foo) { return foo; } // bad if ( foo ) { console.log(foo); } // good if (foo) { console.log(foo); }
19.10 方括号里不要加空格。看示例。 eslint:
array-bracket-spacing
(opens new window)// bad const foo = [ 1, 2, 3 ]; console.log(foo[ 0 ]); // good, 逗号分隔符还是要空格的 const foo = [1, 2, 3]; console.log(foo[0]);
19.12 避免一行代码超过120个字符(包含空格)。
注意: 对于上面——strings--line-length,长字符串不受此规则限制,不应分解。 eslint:
max-len
(opens new window)Why? 这样确保可读性和可维护性
// bad const foo = jsonData && jsonData.foo && jsonData.foo.bar && jsonData.foo.bar.baz && jsonData.foo.bar.baz.quux && jsonData.foo.bar.baz.quux.xyzzy; // bad $.ajax({ method: 'POST', url: 'https://airbnb.com/', data: { name: 'John' } }).done(() => console.log('Congratulations!')).fail(() => console.log('You have failed this city.')); // good const foo = jsonData && jsonData.foo && jsonData.foo.bar && jsonData.foo.bar.baz && jsonData.foo.bar.baz.quux && jsonData.foo.bar.baz.quux.xyzzy; // good $.ajax({ method: 'POST', url: 'https://airbnb.com/', data: { name: 'John' }, }) .done(() => console.log('Congratulations!')) .fail(() => console.log('You have failed this city.'));
19.14
,
前不要空格,,
后需要空格。 eslint:comma-spacing
(opens new window)// bad var foo = 1,bar = 2; var arr = [1 , 2]; // good let foo = 1, bar = 2; let arr = [1, 2];
19.16 调用函数时,函数名和小括号之间不要空格。 eslint:
func-call-spacing
(opens new window)// bad func (); func (); // good func();
19.18 行末不要空格。 eslint:
no-trailing-spaces
(opens new window)19.19 避免出现多个空行。 在文件末尾只允许空一行。 eslint:
no-multiple-empty-lines
(opens new window)// bad let x = 1; let y = 2; // good let x = 1; let y = 2;
19.20 单行的 import 语句要放在多行的 import 语句之前。
// bad import { a, b, } from 'foo' import bar from 'bar' // good import bar from 'bar' import { a, b, } from 'foo'