Airbnb JavaScript 风格指南1

2020-08-04  本文已影响0人  王国的荣耀

https://github.com/airbnb/javascript#translation

目录

  1. Types
  2. References
  3. Objects
  4. Arrays
  5. Destructuring
  6. Strings
  7. Functions
  8. Arrow Functions
  9. Classes & Constructors
  10. Modules
  11. Iterators and Generators
  12. Properties
  13. Variables
  14. Hoisting
  15. Comparison Operators & Equality
  16. Blocks
  17. Control Statements
  18. Comments
  19. Whitespace
  20. Commas

Types

<a name="1.1"></a>
<a name="types--primitives"></a>

<a name="1.2"></a>
<a name="types--complex"></a>

⬆ back to top

References

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

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

<a name="2.3"></a>
<a name="references--block-scope"></a>

⬆ back to top

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.3"></a>
<a name="es6-object-shorthand"></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.7"></a>
<a name="objects--prototype-builtins"></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 }

⬆ back to top

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>

<a name="4.7"></a>
<a name="arrays--callback-return"></a>

<a name="4.8"></a>
<a name="arrays--bracket-newline"></a>

⬆ back to top

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>

⬆ back to top

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>

⬆ back to top

Functions

<a name="7.1"></a>
<a name="functions--declarations"></a>

<a name="7.2"></a>
<a name="functions--iife"></a>

<a name="7.3"></a>
<a name="functions--in-blocks"></a>

<a name="7.4"></a>
<a name="functions--note-on-blocks"></a>

<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.8"></a>
<a name="functions--default-side-effects"></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.11"></a>
<a name="functions--signature-spacing"></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.14"></a>
<a name="functions--spread-vs-apply"></a>

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

⬆ back to top

Arrow Functions

<a name="8.1"></a>
<a name="arrows--use-them"></a>

<a name="8.2"></a>
<a name="arrows--implicit-return"></a>

<a name="8.3"></a>
<a name="arrows--paren-wrap"></a>

<a name="8.4"></a>
<a name="arrows--one-arg-parens"></a>

<a name="8.5"></a>
<a name="arrows--confusing"></a>

<a name="8.6"></a>
<a name="whitespace--implicit-arrow-linebreak"></a>

⬆ back to top

Classes & Constructors

<a name="9.1"></a>
<a name="constructors--use-class"></a>

<a name="9.2"></a>
<a name="constructors--extends"></a>

<a name="9.3"></a>
<a name="constructors--chaining"></a>

<a name="9.4"></a>
<a name="constructors--tostring"></a>

<a name="9.5"></a>
<a name="constructors--no-useless"></a>

<a name="9.6"></a>
<a name="classes--no-duplicate-members"></a>

<a name="classes--methods-use-this"></a>

⬆ back to top

Modules

<a name="10.1"></a>
<a name="modules--use-them"></a>

<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>

<a name="10.9"></a>
<a name="modules--no-webpack-loader-syntax"></a>

⬆ back to top

Iterators and Generators

<a name="11.1"></a>
<a name="iterators--nope"></a>

<a name="11.2"></a>
<a name="generators--nope"></a>

<a name="11.3"></a>
<a name="generators--spacing"></a>

⬆ back to top

Properties

<a name="12.1"></a>
<a name="properties--dot"></a>

<a name="12.2"></a>
<a name="properties--bracket"></a>

<a name="12.3"></a>
<a name="es2016-properties--exponentiation-operator"></a>

⬆ back to top

Variables

<a name="13.1"></a>
<a name="variables--const"></a>

<a name="13.2"></a>
<a name="variables--one-const"></a>

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

<a name="13.4"></a>
<a name="variables--define-where-used"></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>

⬆ back to top

Hoisting

<a name="14.1"></a>
<a name="hoisting--about"></a>

<a name="14.2"></a>
<a name="hoisting--anon-expressions"></a>

<a name="14.3"></a>
<a name="hoisting--named-expresions"></a>

<a name="14.4"></a>
<a name="hoisting--declarations"></a>

⬆ back to top

Comparison Operators & Equality

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

<a name="15.2"></a>
<a name="comparison--if"></a>

<a name="15.3"></a>
<a name="comparison--shortcuts"></a>

<a name="15.4"></a>
<a name="comparison--moreinfo"></a>

<a name="15.5"></a>
<a name="comparison--switch-blocks"></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>

⬆ back to top

Blocks

<a name="16.1"></a>
<a name="blocks--braces"></a>

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

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

⬆ back to top

Control Statements

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

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

⬆ back to top

Comments

<a name="18.1"></a>
<a name="comments--multiline"></a>

<a name="18.2"></a>
<a name="comments--singleline"></a>

<a name="18.3"></a>
<a name="comments--spaces"></a>

<a name="18.4"></a>
<a name="comments--actionitems"></a>

<a name="18.5"></a>
<a name="comments--fixme"></a>

<a name="18.6"></a>
<a name="comments--todo"></a>

⬆ back to top

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="whitespace--no-multiple-blanks"></a>

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

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

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

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

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

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

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

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

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

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

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

⬆ back to top

Commas

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

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

⬆ back to top

上一篇 下一篇

猜你喜欢

热点阅读