JS 规范-常用

2019-04-04  本文已影响0人  琢磨先生lf

from airbnb translation https://github.com/lin-123/javascript

References

<a name="2.1"></a>
<a name="references--prefer-const"></a>

<a name="2.2"></a>
<a name="references--disallow-var"></a>

Objects

<a name="3.1"></a>
<a name="objects--no-new"></a>

<a name="3.2"></a>
<a name="es6-computed-properties"></a>

<a name="3.4"></a>
<a name="es6-object-concise"></a>

<a name="3.5"></a>
<a name="objects--grouped-shorthand"></a>

<a name="3.6"></a>
<a name="objects--quoted-props"></a>

<a name="3.8"></a>
<a name="objects--rest-spread"></a>

// very bad
const original = { a: 1, b: 2 };
const copy = Object.assign(original, { c: 3 }); // this mutates `original` ಠ_ಠ
delete copy.a; // so does this

// bad
const original = { a: 1, b: 2 };
const copy = Object.assign({}, original, { c: 3 }); // copy => { a: 1, b: 2, c: 3 }

// good es6扩展运算符 ...
const original = { a: 1, b: 2 };
// 浅拷贝
const copy = { ...original, c: 3 }; // copy => { a: 1, b: 2, c: 3 }

// rest 赋值运算符
const { a, ...noA } = copy; // noA => { b: 2, c: 3 }

Arrays

<a name="4.1"></a>
<a name="arrays--literals"></a>

<a name="4.2"></a>
<a name="arrays--push"></a>

<a name="4.3"></a>
<a name="es6-array-spreads"></a>

<a name="4.4"></a>
<a name="arrays--from-iterable"></a>

<a name="4.5"></a>
<a name="arrays--from-array-like"></a>

<a name="4.6"></a>
<a name="arrays--mapping"></a>

Destructuring

<a name="5.1"></a>
<a name="destructuring--object"></a>

<a name="5.2"></a>
<a name="destructuring--array"></a>

<a name="5.3"></a>
<a name="destructuring--object-over-array"></a>

Strings

<a name="6.1"></a>
<a name="strings--quotes"></a>

<a name="6.2"></a>
<a name="strings--line-length"></a>

<a name="6.3"></a>
<a name="es6-template-literals"></a>

<a name="6.4"></a>
<a name="strings--eval"></a>

<a name="6.5"></a>
<a name="strings--escaping"></a>

Functions

<a name="7.5"></a>
<a name="functions--arguments-shadow"></a>

<a name="7.6"></a>
<a name="es6-rest"></a>

<a name="7.7"></a>
<a name="es6-default-parameters"></a>

<a name="7.9"></a>
<a name="functions--defaults-last"></a>

<a name="7.10"></a>
<a name="functions--constructor"></a>

<a name="7.12"></a>
<a name="functions--mutate-params"></a>

<a name="7.13"></a>
<a name="functions--reassign-params"></a>

<a name="7.15"></a>
<a name="functions--signature-invocation-indentation"></a>

Modules

<a name="10.2"></a>
<a name="modules--no-wildcard"></a>

<a name="10.3"></a>
<a name="modules--no-export-from-import"></a>

<a name="10.4"></a>
<a name="modules--no-duplicate-imports"></a>

<a name="10.5"></a>
<a name="modules--no-mutable-exports"></a>

<a name="10.6"></a>
<a name="modules--prefer-default-export"></a>

<a name="10.7"></a>
<a name="modules--imports-first"></a>

<a name="10.8"></a>
<a name="modules--multiline-imports-over-newlines"></a>

教学项目中不换行,选前者

Variables

<a name="13.3"></a>
<a name="variables--const-let-group"></a>

<a name="13.5"></a>
<a name="variables--no-chain-assignment"></a>

<a name="13.6"></a>
<a name="variables--unary-increment-decrement"></a>

<a name="13.7"></a>
<a name="variables--linebreak"></a>

<a name="13.8"></a>
<a name="variables--no-unused-vars"></a>

Comparison Operators & Equality

<a name="15.1"></a>
<a name="comparison--eqeqeq"></a>

<a name="15.6"></a>
<a name="comparison--nested-ternaries"></a>

<a name="15.7"></a>
<a name="comparison--unneeded-ternary"></a>

<a name="15.8"></a>
<a name="comparison--no-mixed-operators"></a>

Blocks

<a name="16.2"></a>
<a name="blocks--cuddled-elses"></a>

<a name="16.3"></a>
<a name="blocks--no-else-return"></a>

Control Statements

<a name="17.1"></a>
<a name="control-statements"></a>

<a name="17.2"></a>
<a name="control-statements--value-selection"></a>

不做强制要求

Whitespace

<a name="19.1"></a>
<a name="whitespace--spaces"></a>

<a name="19.2"></a>
<a name="whitespace--before-blocks"></a>

<a name="19.3"></a>
<a name="whitespace--around-keywords"></a>

<a name="19.4"></a>
<a name="whitespace--infix-ops"></a>

<a name="19.5"></a>
<a name="whitespace--newline-at-end"></a>

<a name="19.6"></a>
<a name="whitespace--chains"></a>

<a name="19.7"></a>
<a name="whitespace--after-blocks"></a>

<a name="19.8"></a>
<a name="whitespace--padded-blocks"></a>

<a name="19.9"></a>
<a name="whitespace--in-parens"></a>

<a name="19.10"></a>
<a name="whitespace--in-brackets"></a>

<a name="19.11"></a>
<a name="whitespace--in-braces"></a>

<a name="19.12"></a>
<a name="whitespace--max-len"></a>

<a name="19.13"></a>
<a name="whitespace--block-spacing"></a>

<a name="19.14"></a>
<a name="whitespace--comma-spacing"></a>

<a name="19.15"></a>
<a name="whitespace--computed-property-spacing"></a>

<a name="19.16"></a>
<a name="whitespace--func-call-spacing"></a>

<a name="19.17"></a>
<a name="whitespace--key-spacing"></a>

<a name="19.18"></a>
<a name="whitespace--no-trailing-spaces"></a>

<a name="19.19"></a>
<a name="whitespace--no-multiple-empty-lines"></a>

Commas

<a name="20.1"></a>
<a name="commas--leading-trailing"></a>

<a name="20.2"></a>
<a name="commas--dangling"></a>

Semicolons

<a name="21.1"></a>

Type Casting & Coercion

<a name="22.1"></a>
<a name="coercion--explicit"></a>

<a name="22.2"></a>
<a name="coercion--strings"></a>

<a name="22.3"></a>
<a name="coercion--numbers"></a>

<a name="22.6"></a>
<a name="coercion--booleans"></a>

<a name="23.4"></a>
<a name="naming--leading-underscore"></a>

<a name="23.5"></a>
<a name="naming--self-this"></a>

<a name="23.6"></a>
<a name="naming--filename-matches-export"></a>

上一篇 下一篇

猜你喜欢

热点阅读