mirror of
https://github.com/airbnb/javascript.git
synced 2026-01-14 14:17:55 -05:00
[guide] change straight quotes to curly quotes
This commit is contained in:
38
README.md
38
README.md
@@ -227,7 +227,7 @@ Other Style Guides
|
||||
<a name="objects--grouped-shorthand"></a><a name="3.7"></a>
|
||||
- [3.5](#objects--grouped-shorthand) Group your shorthand properties at the beginning of your object declaration.
|
||||
|
||||
> Why? It's easier to tell which properties are using the shorthand.
|
||||
> Why? It’s easier to tell which properties are using the shorthand.
|
||||
|
||||
```javascript
|
||||
const anakinSkywalker = 'Anakin Skywalker';
|
||||
@@ -369,7 +369,7 @@ Other Style Guides
|
||||
```
|
||||
|
||||
<a name="arrays--callback-return"></a><a name="4.5"></a>
|
||||
- [4.5](#arrays--callback-return) Use return statements in array method callbacks. It's ok to omit the return if the function body consists of a single statement following [8.2](#arrows--implicit-return). eslint: [`array-callback-return`](http://eslint.org/docs/rules/array-callback-return)
|
||||
- [4.5](#arrays--callback-return) Use return statements in array method callbacks. It’s ok to omit the return if the function body consists of a single statement following [8.2](#arrows--implicit-return). eslint: [`array-callback-return`](http://eslint.org/docs/rules/array-callback-return)
|
||||
|
||||
```javascript
|
||||
// good
|
||||
@@ -615,7 +615,7 @@ Other Style Guides
|
||||
<a name="functions--declarations"></a><a name="7.1"></a>
|
||||
- [7.1](#functions--declarations) Use named function expressions instead of function declarations. eslint: [`func-style`](http://eslint.org/docs/rules/func-style) jscs: [`disallowFunctionDeclarations`](http://jscs.info/rule/disallowFunctionDeclarations)
|
||||
|
||||
> Why? Function declarations are hoisted, which means that it’s easy - too easy - to reference the function before it is defined in the file. This harms readability and maintainability. If you find that a function’s definition is large or complex enough that it is interfering with understanding the rest of the file, then perhaps it’s time to extract it to its own module! Don’t forget to name the expression - anonymous functions can make it harder to locate the problem in an Error's call stack. ([Discussion](https://github.com/airbnb/javascript/issues/794))
|
||||
> Why? Function declarations are hoisted, which means that it’s easy - too easy - to reference the function before it is defined in the file. This harms readability and maintainability. If you find that a function’s definition is large or complex enough that it is interfering with understanding the rest of the file, then perhaps it’s time to extract it to its own module! Don’t forget to name the expression - anonymous functions can make it harder to locate the problem in an Error’s call stack. ([Discussion](https://github.com/airbnb/javascript/issues/794))
|
||||
|
||||
```javascript
|
||||
// bad
|
||||
@@ -650,7 +650,7 @@ Other Style Guides
|
||||
- [7.3](#functions--in-blocks) Never declare a function in a non-function block (`if`, `while`, etc). Assign the function to a variable instead. Browsers will allow you to do it, but they all interpret it differently, which is bad news bears. eslint: [`no-loop-func`](http://eslint.org/docs/rules/no-loop-func.html)
|
||||
|
||||
<a name="functions--note-on-blocks"></a><a name="7.4"></a>
|
||||
- [7.4](#functions--note-on-blocks) **Note:** ECMA-262 defines a `block` as a list of statements. A function declaration is not a statement. [Read ECMA-262's note on this issue](http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf#page=97).
|
||||
- [7.4](#functions--note-on-blocks) **Note:** ECMA-262 defines a `block` as a list of statements. A function declaration is not a statement. [Read ECMA-262’s note on this issue](http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf#page=97).
|
||||
|
||||
```javascript
|
||||
// bad
|
||||
@@ -838,7 +838,7 @@ Other Style Guides
|
||||
<a name="functions--spread-vs-apply"></a><a name="7.14"></a>
|
||||
- [7.14](#functions--spread-vs-apply) Prefer the use of the spread operator `...` to call variadic functions. eslint: [`prefer-spread`](http://eslint.org/docs/rules/prefer-spread)
|
||||
|
||||
> Why? It's cleaner, you don't need to supply a context, and you can not easily compose `new` with `apply`.
|
||||
> Why? It’s cleaner, you don't need to supply a context, and you can not easily compose `new` with `apply`.
|
||||
|
||||
```javascript
|
||||
// bad
|
||||
@@ -964,7 +964,7 @@ Other Style Guides
|
||||
```
|
||||
|
||||
<a name="arrows--one-arg-parens"></a><a name="8.4"></a>
|
||||
- [8.4](#arrows--one-arg-parens) If your function takes a single argument and doesn’t use braces, omit the parentheses. Otherwise, always include parentheses around arguments for clarity and consistency. Note: it is also acceptable to always use parentheses, in which case use the ["always" option](http://eslint.org/docs/rules/arrow-parens#always) for eslint or do not include [`disallowParenthesesAroundArrowParam`](http://jscs.info/rule/disallowParenthesesAroundArrowParam) for jscs. eslint: [`arrow-parens`](http://eslint.org/docs/rules/arrow-parens.html) jscs: [`disallowParenthesesAroundArrowParam`](http://jscs.info/rule/disallowParenthesesAroundArrowParam)
|
||||
- [8.4](#arrows--one-arg-parens) If your function takes a single argument and doesn’t use braces, omit the parentheses. Otherwise, always include parentheses around arguments for clarity and consistency. Note: it is also acceptable to always use parentheses, in which case use the [“always” option](http://eslint.org/docs/rules/arrow-parens#always) for eslint or do not include [`disallowParenthesesAroundArrowParam`](http://jscs.info/rule/disallowParenthesesAroundArrowParam) for jscs. eslint: [`arrow-parens`](http://eslint.org/docs/rules/arrow-parens.html) jscs: [`disallowParenthesesAroundArrowParam`](http://jscs.info/rule/disallowParenthesesAroundArrowParam)
|
||||
|
||||
> Why? Less visual clutter.
|
||||
|
||||
@@ -1108,7 +1108,7 @@ Other Style Guides
|
||||
```
|
||||
|
||||
<a name="constructors--tostring"></a><a name="9.4"></a>
|
||||
- [9.4](#constructors--tostring) It's okay to write a custom toString() method, just make sure it works successfully and causes no side effects.
|
||||
- [9.4](#constructors--tostring) It’s okay to write a custom toString() method, just make sure it works successfully and causes no side effects.
|
||||
|
||||
```javascript
|
||||
class Jedi {
|
||||
@@ -1185,7 +1185,7 @@ Other Style Guides
|
||||
<a name="modules--use-them"></a><a name="10.1"></a>
|
||||
- [10.1](#modules--use-them) Always use modules (`import`/`export`) over a non-standard module system. You can always transpile to your preferred module system.
|
||||
|
||||
> Why? Modules are the future, let's start using the future now.
|
||||
> Why? Modules are the future, let’s start using the future now.
|
||||
|
||||
```javascript
|
||||
// bad
|
||||
@@ -1336,7 +1336,7 @@ Other Style Guides
|
||||
## Iterators and Generators
|
||||
|
||||
<a name="iterators--nope"></a><a name="11.1"></a>
|
||||
- [11.1](#iterators--nope) Don't use iterators. Prefer JavaScript's higher-order functions instead of loops like `for-in` or `for-of`. eslint: [`no-iterator`](http://eslint.org/docs/rules/no-iterator.html) [`no-restricted-syntax`](http://eslint.org/docs/rules/no-restricted-syntax)
|
||||
- [11.1](#iterators--nope) Don't use iterators. Prefer JavaScript’s higher-order functions instead of loops like `for-in` or `for-of`. eslint: [`no-iterator`](http://eslint.org/docs/rules/no-iterator.html) [`no-restricted-syntax`](http://eslint.org/docs/rules/no-restricted-syntax)
|
||||
|
||||
> Why? This enforces our immutable rule. Dealing with pure functions that return values is easier to reason about than side effects.
|
||||
|
||||
@@ -1495,7 +1495,7 @@ Other Style Guides
|
||||
<a name="variables--one-const"></a><a name="13.2"></a>
|
||||
- [13.2](#variables--one-const) Use one `const` or `let` declaration per variable. eslint: [`one-var`](http://eslint.org/docs/rules/one-var.html) jscs: [`disallowMultipleVarDecl`](http://jscs.info/rule/disallowMultipleVarDecl)
|
||||
|
||||
> Why? It's easier to add new variable declarations this way, and you never have to worry about swapping out a `;` for a `,` or introducing punctuation-only diffs. You can also step through each declaration with the debugger, instead of jumping through all of them at once.
|
||||
> Why? It’s easier to add new variable declarations this way, and you never have to worry about swapping out a `;` for a `,` or introducing punctuation-only diffs. You can also step through each declaration with the debugger, instead of jumping through all of them at once.
|
||||
|
||||
```javascript
|
||||
// bad
|
||||
@@ -1651,7 +1651,7 @@ Other Style Guides
|
||||
## Hoisting
|
||||
|
||||
<a name="hoisting--about"></a><a name="14.1"></a>
|
||||
- [14.1](#hoisting--about) `var` declarations get hoisted to the top of their scope, their assignment does not. `const` and `let` declarations are blessed with a new concept called [Temporal Dead Zones (TDZ)](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/let#Temporal_dead_zone_and_errors_with_let). It's important to know why [typeof is no longer safe](http://es-discourse.com/t/why-typeof-is-no-longer-safe/15).
|
||||
- [14.1](#hoisting--about) `var` declarations get hoisted to the top of their scope, their assignment does not. `const` and `let` declarations are blessed with a new concept called [Temporal Dead Zones (TDZ)](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/let#Temporal_dead_zone_and_errors_with_let). It’s important to know why [typeof is no longer safe](http://es-discourse.com/t/why-typeof-is-no-longer-safe/15).
|
||||
|
||||
```javascript
|
||||
// we know this wouldn't work (assuming there
|
||||
@@ -1928,7 +1928,7 @@ Other Style Guides
|
||||
```
|
||||
|
||||
<a name="blocks--cuddled-elses"></a><a name="16.2"></a>
|
||||
- [16.2](#blocks--cuddled-elses) If you're using multi-line blocks with `if` and `else`, put `else` on the same line as your `if` block's closing brace. eslint: [`brace-style`](http://eslint.org/docs/rules/brace-style.html) jscs: [`disallowNewlineBeforeBlockStatements`](http://jscs.info/rule/disallowNewlineBeforeBlockStatements)
|
||||
- [16.2](#blocks--cuddled-elses) If you're using multi-line blocks with `if` and `else`, put `else` on the same line as your `if` block’s closing brace. eslint: [`brace-style`](http://eslint.org/docs/rules/brace-style.html) jscs: [`disallowNewlineBeforeBlockStatements`](http://jscs.info/rule/disallowNewlineBeforeBlockStatements)
|
||||
|
||||
```javascript
|
||||
// bad
|
||||
@@ -1954,7 +1954,7 @@ Other Style Guides
|
||||
## Control Statements
|
||||
|
||||
<a name="control-statements"></a>
|
||||
- [17.1](#control-statements) In case your control statement (`if`, `while` etc.) gets too long or exceeds the maximum line length, each (grouped) condition could be put into a new line. It's up to you whether the logical operator should begin or end the line.
|
||||
- [17.1](#control-statements) In case your control statement (`if`, `while` etc.) gets too long or exceeds the maximum line length, each (grouped) condition could be put into a new line. It’s up to you whether the logical operator should begin or end the line.
|
||||
|
||||
```javascript
|
||||
// bad
|
||||
@@ -2040,7 +2040,7 @@ Other Style Guides
|
||||
```
|
||||
|
||||
<a name="comments--singleline"></a><a name="17.2"></a>
|
||||
- [18.2](#comments--singleline) Use `//` for single line comments. Place single line comments on a newline above the subject of the comment. Put an empty line before the comment unless it's on the first line of a block.
|
||||
- [18.2](#comments--singleline) Use `//` for single line comments. Place single line comments on a newline above the subject of the comment. Put an empty line before the comment unless it’s on the first line of a block.
|
||||
|
||||
```javascript
|
||||
// bad
|
||||
@@ -2859,7 +2859,7 @@ Other Style Guides
|
||||
```
|
||||
|
||||
<a name="naming--camelCase-default-export"></a><a name="22.7"></a>
|
||||
- [23.7](#naming--camelCase-default-export) Use camelCase when you export-default a function. Your filename should be identical to your function's name.
|
||||
- [23.7](#naming--camelCase-default-export) Use camelCase when you export-default a function. Your filename should be identical to your function’s name.
|
||||
|
||||
```javascript
|
||||
function makeStyleGuide() {
|
||||
@@ -2962,7 +2962,7 @@ Other Style Guides
|
||||
```
|
||||
|
||||
<a name="accessors--consistent"></a><a name="23.4"></a>
|
||||
- [24.4](#accessors--consistent) It's okay to create get() and set() functions, but be consistent.
|
||||
- [24.4](#accessors--consistent) It’s okay to create get() and set() functions, but be consistent.
|
||||
|
||||
```javascript
|
||||
class Jedi {
|
||||
@@ -3086,7 +3086,7 @@ Other Style Guides
|
||||
## ECMAScript 5 Compatibility
|
||||
|
||||
<a name="es5-compat--kangax"></a><a name="26.1"></a>
|
||||
- [27.1](#es5-compat--kangax) Refer to [Kangax](https://twitter.com/kangax/)'s ES5 [compatibility table](https://kangax.github.io/es5-compat-table/).
|
||||
- [27.1](#es5-compat--kangax) Refer to [Kangax](https://twitter.com/kangax/)’s ES5 [compatibility table](https://kangax.github.io/es5-compat-table/).
|
||||
|
||||
**[⬆ back to top](#table-of-contents)**
|
||||
|
||||
@@ -3134,7 +3134,7 @@ Other Style Guides
|
||||
- Strive to write many small pure functions, and minimize where mutations occur.
|
||||
- Be cautious about stubs and mocks - they can make your tests more brittle.
|
||||
- We primarily use [`mocha`](https://www.npmjs.com/package/mocha) at Airbnb. [`tape`](https://www.npmjs.com/package/tape) is also used occasionally for small, separate modules.
|
||||
- 100% test coverage is a good goal to strive for, even if it's not always practical to reach it.
|
||||
- 100% test coverage is a good goal to strive for, even if it’s not always practical to reach it.
|
||||
- Whenever you fix a bug, _write a regression test_. A bug fixed without a regression test is almost certainly going to break again in the future.
|
||||
|
||||
**[⬆ back to top](#table-of-contents)**
|
||||
@@ -3388,6 +3388,6 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
## Amendments
|
||||
|
||||
We encourage you to fork this guide and change the rules to fit your team's style guide. Below, you may list some amendments to the style guide. This allows you to periodically update your style guide without having to deal with merge conflicts.
|
||||
We encourage you to fork this guide and change the rules to fit your team’s style guide. Below, you may list some amendments to the style guide. This allows you to periodically update your style guide without having to deal with merge conflicts.
|
||||
|
||||
# };
|
||||
|
||||
Reference in New Issue
Block a user