Π ΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΏΠΎ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ JavaScript-ΠΊΠΎΠ΄Π° ΠΎΡ Airbnb() {
ΠΠ°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ°Π·ΡΠΌΠ½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΊ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ JavaScript-ΠΊΠΎΠ΄Π°
ΠΠ°ΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: ΡΡΠΎ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Babel Π²ΠΌΠ΅ΡΡΠ΅ Ρ babel-preset-airbnb ΠΈΠ»ΠΈ Π°Π½Π°Π»ΠΎΠ³ΠΎΠΌ. ΠΠ½ΠΎ ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΠΉ shims/polyfills Π² Π²Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, ΡΠ°ΠΊΠΎΠΉ ΠΊΠ°ΠΊ airbnb-browser-shims ΠΈΠ»ΠΈ Π°Π½Π°Π»ΠΎΠ³.
ΠΡΠΎ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΡΠ°ΠΊΠΆΠ΅ Π΄ΠΎΡΡΡΠΏΠ½ΠΎ Π½Π° Π΄ΡΡΠ³ΠΈΡ ΡΠ·ΡΠΊΠ°Ρ . Π‘ΠΌΠΎΡΡΠΈΡΠ΅ ΠΠ΅ΡΠ΅Π²ΠΎΠ΄Ρ.
ΠΡΡΠ³ΠΈΠ΅ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π°
- Π’ΠΈΠΏΡ
- ΠΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
- ΠΠ±ΡΠ΅ΠΊΡΡ
- ΠΠ°ΡΡΠΈΠ²Ρ
- ΠΠ΅ΡΡΡΡΠΊΡΡΡΠΈΠ·Π°ΡΠΈΡ
- Π‘ΡΡΠΎΠΊΠΈ
- Π€ΡΠ½ΠΊΡΠΈΠΈ
- Π‘ΡΡΠ΅Π»ΠΎΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ
- ΠΠ»Π°ΡΡΡ ΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΡ
- ΠΠΎΠ΄ΡΠ»ΠΈ
- ΠΡΠ΅ΡΠ°ΡΠΎΡΡ ΠΈ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΡ
- Π‘Π²ΠΎΠΉΡΡΠ²Π°
- ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅
- ΠΠΎΠ΄ΡΡΠΌ
- ΠΠΏΠ΅ΡΠ°ΡΠΎΡΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ ΠΈ ΡΠ°Π²Π΅Π½ΡΡΠ²Π°
- ΠΠ»ΠΎΠΊΠΈ
- Π£ΠΏΡΠ°Π²Π»ΡΡΡΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ
- ΠΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ
- ΠΡΠΎΠ±Π΅Π»Ρ
- ΠΠ°ΠΏΡΡΡΠ΅
- Π’ΠΎΡΠΊΠ° Ρ Π·Π°ΠΏΡΡΠΎΠΉ
- ΠΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΠΈΠΏΠΎΠ²
- Π‘ΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠΈ
- ΠΠΊΡΠ΅ΡΡΠΎΡΡ
- Π‘ΠΎΠ±ΡΡΠΈΡ
- jQuery
- ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ECMAScript 5
- ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ECMAScript 6+ (ES 2015+)
- Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°
- Π’Π΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
- ΠΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ
- Π Π΅ΡΡΡΡΡ
- Π ΡΠ΅Π°Π»ΡΠ½ΠΎΠΉ ΠΆΠΈΠ·Π½ΠΈ
- ΠΠ΅ΡΠ΅Π²ΠΎΠ΄Ρ
- ΠΠΎΠΎΠ±ΡΠ°ΡΡΡΡ Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌΠΈ Airbnb
- Π£ΡΠ°ΡΡΠ½ΠΈΠΊΠΈ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π°
- ΠΠΈΡΠ΅Π½Π·ΠΈΡ
- ΠΠΎΠΏΡΠ°Π²ΠΊΠΈ
-
1.1 ΠΡΠΎΡΡΡΠ΅ ΡΠΈΠΏΡ: ΠΠΎΠ³Π΄Π° Π²Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΡΠ΅ΡΠ΅ Ρ ΠΏΡΠΎΡΡΡΠΌ ΡΠΈΠΏΠΎΠΌ, Π²Ρ Π½Π°ΠΏΡΡΠΌΡΡ ΡΠ°Π±ΠΎΡΠ°Π΅ΡΠ΅ Ρ Π΅Π³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ.
string
number
boolean
null
undefined
symbol
bigint
const foo = 1; let bar = foo; bar = 9; console.log(foo, bar); // => 1, 9
- Symbol ΠΈ BigInt Π½Π΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ Π·Π°ΠΏΠΎΠ»ΠΈΡΠΈΠ»Π»Π΅Π½Ρ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΎΠ½ΠΈ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ, Π΅ΡΠ»ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π²Π΅Π΄ΡΡΡΡ Π΄Π»Ρ Π±ΡΠ°ΡΠ·Π΅ΡΠΎΠ² ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΈΡ ΡΡΠ΅Π΄, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΠΈΡ Π½Π°ΡΠΈΠ²Π½ΠΎ.
-
1.2 Π‘Π»ΠΎΠΆΠ½ΡΠ΅ ΡΠΈΠΏΡ: ΠΠΎΠ³Π΄Π° Π²Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΡΠ΅ΡΠ΅ ΡΠΎ ΡΠ»ΠΎΠΆΠ½ΡΠΌ ΡΠΈΠΏΠΎΠΌ, Π²Ρ ΡΠ°Π±ΠΎΡΠ°Π΅ΡΠ΅ ΡΠΎ ΡΡΡΠ»ΠΊΠΎΠΉ Π½Π° Π΅Π³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅.
object
array
function
const foo = [1, 2]; const bar = foo; bar[0] = 9; console.log(foo[0], bar[0]); // => 9, 9
-
2.1 ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅
const
Π΄Π»Ρ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ; ΠΈΠ·Π±Π΅Π³Π°ΠΉΡΠ΅var
. eslint:prefer-const
,no-const-assign
ΠΠΎΡΠ΅ΠΌΡ? ΠΡΠΎ Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅Ρ, ΡΡΠΎ Π²Ρ Π½Π΅ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, Ρ.ΠΊ. ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΠΎΡΠΈΠ±ΠΊΠ°ΠΌ ΠΈ ΠΊ ΡΡΠ»ΠΎΠΆΠ½Π΅Π½ΠΈΡ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ ΠΊΠΎΠ΄Π°.
// ΠΏΠ»ΠΎΡ ΠΎ var a = 1; var b = 2; // Ρ ΠΎΡΠΎΡΠΎ const a = 1; const b = 2;
-
2.2 ΠΡΠ»ΠΈ Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅
let
Π²ΠΌΠ΅ΡΡΠΎvar
. eslint:no-var
ΠΠΎΡΠ΅ΠΌΡ? ΠΠ±Π»Π°ΡΡΡ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ
let
β Π±Π»ΠΎΠΊ, Ρvar
β ΡΡΠ½ΠΊΡΠΈΡ.// ΠΏΠ»ΠΎΡ ΠΎ var count = 1; if (true) { count += 1; } // Ρ ΠΎΡΠΎΡΠΎ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ let. let count = 1; if (true) { count += 1; }
-
2.3 ΠΠΎΠΌΠ½ΠΈΡΠ΅, ΡΡΠΎ Ρ
let
ΠΈconst
Π±Π»ΠΎΡΠ½Π°Ρ ΠΎΠ±Π»Π°ΡΡΡ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ, Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊvar
ΠΈΠΌΠ΅Π΅Ρ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ ΠΎΠ±Π»Π°ΡΡΡ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ.// const ΠΈ let ΡΡΡΠ΅ΡΡΠ²ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠΎΠΌ Π±Π»ΠΎΠΊΠ΅, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΎΠ½ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ. { let a = 1; const b = 1; var c = 1; } console.log(a); // ReferenceError console.log(b); // ReferenceError console.log(c); // 1
Π ΠΏΡΠΈΠ²Π΅Π΄ΡΠ½Π½ΠΎΠΌ Π²ΡΡΠ΅ ΠΊΠΎΠ΄Π΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΈΠ΄Π΅ΡΡ, ΡΡΠΎ ΡΡΡΠ»ΠΊΠΈ Π½Π°
a
ΠΈb
ΠΏΡΠΈΠ²Π΅Π΄ΡΡ ΠΊ ΠΎΡΠΈΠ±ΠΊΠ΅ReferenceError
, Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊc
ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΈΡΠ»ΠΎ. ΠΡΠΎ ΡΠ²ΡΠ·Π°Π½ΠΎ Ρ ΡΠ΅ΠΌ, ΡΡΠΎa
ΠΈb
ΠΈΠΌΠ΅ΡΡ Π±Π»ΠΎΡΠ½ΡΡ ΠΎΠ±Π»Π°ΡΡΡ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ, Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ Ρc
ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½Π°Ρ.
-
3.1 ΠΠ»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π»ΠΈΡΠ΅ΡΠ°Π»ΡΠ½ΡΡ Π½ΠΎΡΠ°ΡΠΈΡ. eslint:
no-new-object
// ΠΏΠ»ΠΎΡ ΠΎ const item = new Object(); // Ρ ΠΎΡΠΎΡΠΎ const item = {};
-
3.2 ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π²ΡΡΠΈΡΠ»ΡΠ΅ΠΌΡΠ΅ ΠΈΠΌΠ΅Π½Π° ΡΠ²ΠΎΠΉΡΡΠ², ΠΊΠΎΠ³Π΄Π° ΡΠΎΠ·Π΄Π°ΡΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ Ρ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ ΡΠ²ΠΎΠΉΡΡΠ².
ΠΠΎΡΠ΅ΠΌΡ? ΠΠ½ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Π²Π°ΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π²ΡΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΌΠ΅ΡΡΠ΅.
function getKey(k) { return `a key named ${k}`; } // ΠΏΠ»ΠΎΡ ΠΎ const obj = { id: 5, name: 'San Francisco', }; obj[getKey('enabled')] = true; // Ρ ΠΎΡΠΎΡΠΎ const obj = { id: 5, name: 'San Francisco', [getKey('enabled')]: true, };
-
3.3 ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠΎΠΊΡΠ°ΡΡΠ½Π½ΡΡ Π·Π°ΠΏΠΈΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° ΠΎΠ±ΡΠ΅ΠΊΡΠ°. eslint:
object-shorthand
// ΠΏΠ»ΠΎΡ ΠΎ const atom = { value: 1, addValue: function (value) { return atom.value + value; }, }; // Ρ ΠΎΡΠΎΡΠΎ const atom = { value: 1, addValue(value) { return atom.value + value; }, };
-
3.4 ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠΎΠΊΡΠ°ΡΡΠ½Π½ΡΡ Π·Π°ΠΏΠΈΡΡ ΡΠ²ΠΎΠΉΡΡΠ² ΠΎΠ±ΡΠ΅ΠΊΡΠ°. eslint:
object-shorthand
ΠΠΎΡΠ΅ΠΌΡ? ΠΡΠΎ ΠΊΠΎΡΠΎΡΠ΅ ΠΈ ΠΏΠΎΠ½ΡΡΠ½Π΅Π΅.
const lukeSkywalker = 'Luke Skywalker'; // ΠΏΠ»ΠΎΡ ΠΎ const obj = { lukeSkywalker: lukeSkywalker, }; // Ρ ΠΎΡΠΎΡΠΎ const obj = { lukeSkywalker, };
-
3.5 ΠΡΡΠΏΠΏΠΈΡΡΠΉΡΠ΅ Π²Π°ΡΠΈ ΡΠΎΠΊΡΠ°ΡΡΠ½Π½ΡΠ΅ Π·Π°ΠΏΠΈΡΠΈ ΡΠ²ΠΎΠΉΡΡΠ² Π² Π½Π°ΡΠ°Π»Π΅ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°.
ΠΠΎΡΠ΅ΠΌΡ? Π’Π°ΠΊ Π»Π΅Π³ΡΠ΅ ΡΠΊΠ°Π·Π°ΡΡ, ΠΊΠ°ΠΊΠΈΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΡΠΎΠΊΡΠ°ΡΡΠ½Π½ΡΡ Π·Π°ΠΏΠΈΡΡ.
const anakinSkywalker = 'Anakin Skywalker'; const lukeSkywalker = 'Luke Skywalker'; // ΠΏΠ»ΠΎΡ ΠΎ const obj = { episodeOne: 1, twoJediWalkIntoACantina: 2, lukeSkywalker, episodeThree: 3, mayTheFourth: 4, anakinSkywalker, }; // Ρ ΠΎΡΠΎΡΠΎ const obj = { lukeSkywalker, anakinSkywalker, episodeOne: 1, twoJediWalkIntoACantina: 2, episodeThree: 3, mayTheFourth: 4, };
-
3.6 Π’ΠΎΠ»ΡΠΊΠΎ Π½Π΅Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΠ΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ ΠΏΠΎΠΌΠ΅ΡΠ°ΡΡΡΡ Π² ΠΊΠ°Π²ΡΡΠΊΠΈ. eslint:
quote-props
ΠΠΎΡΠ΅ΠΌΡ? ΠΠ° Π½Π°Ρ Π²Π·Π³Π»ΡΠ΄, ΡΠ°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ Π»Π΅Π³ΡΠ΅ ΡΠΈΡΠ°ΡΡ. ΠΡΠΎ ΡΠ»ΡΡΡΠ°Π΅Ρ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΊΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ°, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΎΠ±Π»Π΅Π³ΡΠ°Π΅Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ Π΄Π»Ρ ΠΌΠ½ΠΎΠ³ΠΈΡ JS-Π΄Π²ΠΈΠΆΠΊΠΎΠ².
// ΠΏΠ»ΠΎΡ ΠΎ const bad = { 'foo': 3, 'bar': 4, 'data-blah': 5, }; // Ρ ΠΎΡΠΎΡΠΎ const good = { foo: 3, bar: 4, 'data-blah': 5, };
-
3.7 ΠΠ΅ Π²ΡΠ·ΡΠ²Π°ΠΉΡΠ΅ Π½Π°ΠΏΡΡΠΌΡΡ ΠΌΠ΅ΡΠΎΠ΄Ρ
Object.prototype
, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊhasOwnProperty
,propertyIsEnumerable
, ΠΈisPrototypeOf
. eslint:no-prototype-builtins
ΠΠΎΡΠ΅ΠΌΡ? ΠΡΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ Π² ΡΠ²ΠΎΠΉΡΡΠ²Π°Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΡ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ
{ hasOwnProperty: false }
, ΠΈΠ»ΠΈ ΡΡΠΎΡ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡnull
(Object.create(null)
).// ΠΏΠ»ΠΎΡ ΠΎ console.log(object.hasOwnProperty(key)); // Ρ ΠΎΡΠΎΡΠΎ console.log(Object.prototype.hasOwnProperty.call(object, key)); // ΠΎΡΠ»ΠΈΡΠ½ΠΎ const has = Object.prototype.hasOwnProperty; // ΠΡΡΠΈΡΡΠ΅ΠΌ Π·Π°ΠΏΡΠΎΡ Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΌΠΎΠ΄ΡΠ»Ρ. console.log(has.call(object, key)); /* ΠΈΠ»ΠΈ */ import has from 'has'; // https://www.npmjs.com/package/has console.log(has(object, key));
-
3.8 ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ Π²ΠΌΠ΅ΡΡΠΎ
Object.assign
Π΄Π»Ρ ΠΏΠΎΠ²Π΅ΡΡ Π½ΠΎΡΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ². ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΎΡΡΠ°Π²ΡΠΈΡ ΡΡ ΡΠ²ΠΎΠΉΡΡΠ², ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π½ΠΎΠ²ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΠΎΠΏΡΡΠ΅Π½Π½ΡΠΌΠΈ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌΠΈ. eslint:prefer-object-spread
// ΠΎΡΠ΅Π½Ρ ΠΏΠ»ΠΎΡ ΠΎ const original = { a: 1, b: 2 }; const copy = Object.assign(original, { c: 3 }); // ΡΡΠ° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅Ρ `original` ΰ² _ΰ² delete copy.a; // Π΅ΡΠ»ΠΈ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ°ΠΊ // ΠΏΠ»ΠΎΡ ΠΎ const original = { a: 1, b: 2 }; const copy = Object.assign({}, original, { c: 3 }); // copy => { a: 1, b: 2, c: 3 } // Ρ ΠΎΡΠΎΡΠΎ const original = { a: 1, b: 2 }; const copy = { ...original, c: 3 }; // copy => { a: 1, b: 2, c: 3 } const { a, ...noA } = copy; // noA => { b: 2, c: 3 }
-
4.1 ΠΠ»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π»ΠΈΡΠ΅ΡΠ°Π»ΡΠ½ΡΡ Π½ΠΎΡΠ°ΡΠΈΡ. eslint:
no-array-constructor
// ΠΏΠ»ΠΎΡ ΠΎ const items = new Array(); // Ρ ΠΎΡΠΎΡΠΎ const items = [];
-
4.2 ΠΠ»Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π² ΠΌΠ°ΡΡΠΈΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Array#push Π²ΠΌΠ΅ΡΡΠΎ ΠΏΡΡΠΌΠΎΠ³ΠΎ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡ.
const someStack = []; // ΠΏΠ»ΠΎΡ ΠΎ someStack[someStack.length] = 'abracadabra'; // Ρ ΠΎΡΠΎΡΠΎ someStack.push('abracadabra');
-
4.3 ΠΠ»Ρ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ
...
.// ΠΏΠ»ΠΎΡ ΠΎ const len = items.length; const itemsCopy = []; let i; for (i = 0; i < len; i += 1) { itemsCopy[i] = items[i]; } // Ρ ΠΎΡΠΎΡΠΎ const itemsCopy = [...items];
-
4.4 ΠΠ»Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΈΡΠ΅ΡΠΈΡΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π² ΠΌΠ°ΡΡΠΈΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ
...
Π²ΠΌΠ΅ΡΡΠΎArray.from
.const foo = document.querySelectorAll('.foo'); // Ρ ΠΎΡΠΎΡΠΎ const nodes = Array.from(foo); // ΠΎΡΠ»ΠΈΡΠ½ΠΎ const nodes = [...foo];
-
4.5 ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅
Array.from
Π΄Π»Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π² ΠΌΠ°ΡΡΠΈΠ².const arrLike = { 0: 'foo', 1: 'bar', 2: 'baz', length: 3 }; // ΠΏΠ»ΠΎΡ ΠΎ const arr = Array.prototype.slice.call(arrLike); // Ρ ΠΎΡΠΎΡΠΎ const arr = Array.from(arrLike);
-
4.6 ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅
Array.from
Π²ΠΌΠ΅ΡΡΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ...
Π΄Π»Ρ ΠΌΠ°ΠΏΠΏΠΈΠ½Π³Π° ΠΈΡΠ΅ΡΠΈΡΡΠ΅ΠΌΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π°.// ΠΏΠ»ΠΎΡ ΠΎ const baz = [...foo].map(bar); // Ρ ΠΎΡΠΎΡΠΎ const baz = Array.from(foo, bar);
-
4.7 ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ
return
Π²Π½ΡΡΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²Π° Π² ΠΌΠ΅ΡΠΎΠ΄Π°Ρ ΠΌΠ°ΡΡΠΈΠ²Π°. ΠΠΎΠΆΠ½ΠΎ ΠΎΠΏΡΡΡΠΈΡΡreturn
, ΠΊΠΎΠ³Π΄Π° ΡΠ΅Π»ΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΠ΅ΠΉ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π±Π΅Π· ΠΏΠΎΠ±ΠΎΡΠ½ΡΡ ΡΡΡΠ΅ΠΊΡΠΎΠ². 8.2. eslint:array-callback-return
// Ρ ΠΎΡΠΎΡΠΎ [1, 2, 3].map((x) => { const y = x + 1; return x * y; }); // Ρ ΠΎΡΠΎΡΠΎ [1, 2, 3].map((x) => x + 1); // ΠΏΠ»ΠΎΡ ΠΎ - Π½Π΅Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, `acc` ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ `undefined` ΠΏΠΎΡΠ»Π΅ ΠΏΠ΅ΡΠ²ΠΎΠΉ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΈ [[0, 1], [2, 3], [4, 5]].reduce((acc, item, index) => { const flatten = acc.concat(item); }); // Ρ ΠΎΡΠΎΡΠΎ [[0, 1], [2, 3], [4, 5]].reduce((acc, item, index) => { const flatten = acc.concat(item); return flatten; }); // ΠΏΠ»ΠΎΡ ΠΎ inbox.filter((msg) => { const { subject, author } = msg; if (subject === 'Mockingbird') { return author === 'Harper Lee'; } else { return false; } }); // Ρ ΠΎΡΠΎΡΠΎ inbox.filter((msg) => { const { subject, author } = msg; if (subject === 'Mockingbird') { return author === 'Harper Lee'; } return false; });
-
4.8 ΠΡΠ»ΠΈ ΠΌΠ°ΡΡΠΈΠ² ΡΠ°ΡΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΡΡΠΎΠΊΠ°Ρ , ΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠ°Π·ΡΡΠ²Ρ ΡΡΡΠΎΠΊ ΠΏΠΎΡΠ»Π΅ ΠΎΡΠΊΡΡΡΠΈΡ ΠΈ ΠΏΠ΅ΡΠ΅Π΄ Π·Π°ΠΊΡΡΡΠΈΠ΅ΠΌ ΡΠΊΠΎΠ±ΠΎΠΊ.
// ΠΏΠ»ΠΎΡ ΠΎ const arr = [ [0, 1], [2, 3], [4, 5], ]; const objectInArray = [{ id: 1, }, { id: 2, }]; const numberInArray = [ 1, 2, ]; // Ρ ΠΎΡΠΎΡΠΎ const arr = [[0, 1], [2, 3], [4, 5]]; const objectInArray = [ { id: 1, }, { id: 2, }, ]; const numberInArray = [ 1, 2, ];
-
5.1 ΠΡΠΈ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠΈ ΠΊ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π΄Π΅ΡΡΡΡΠΊΡΡΡΠΈΠ·Π°ΡΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°. eslint:
prefer-destructuring
ΠΠΎΡΠ΅ΠΌΡ? ΠΠ΅ΡΡΡΡΠΊΡΡΡΠΈΠ·Π°ΡΠΈΡ ΡΠΎΡ ΡΠ°Π½ΡΠ΅Ρ Π²Π°Ρ ΠΎΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π΄Π»Ρ ΡΡΠΈΡ ΡΠ²ΠΎΠΉΡΡΠ² ΠΈ ΠΎΡ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠ³ΠΎ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡΡ. ΠΠΎΠ²ΡΠΎΡΠ½ΡΠΉ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌ ΡΠΎΠ·Π΄Π°ΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ²ΡΠΎΡΡΡΡΠΈΠΉΡΡ ΠΊΠΎΠ΄, ΡΡΠ΅Π±ΡΠ΅Ρ Π±ΠΎΠ»ΡΡΠ΅Π³ΠΎ ΡΡΠ΅Π½ΠΈΡ ΠΈ ΡΠΎΠ·Π΄Π°ΡΡ Π±ΠΎΠ»ΡΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ Π΄Π»Ρ ΠΎΡΠΈΠ±ΠΎΠΊ. ΠΠ΅ΡΡΡΡΠΊΡΡΡΠΈΠ·Π°ΡΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΡΠ°ΠΊΠΆΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ Π΅Π΄ΠΈΠ½ΠΎΠ΅ ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΡΡΡΠΊΡΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² Π±Π»ΠΎΠΊΠ΅, Π²ΠΌΠ΅ΡΡΠΎ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΡΡΠ΅Π±ΠΎΠ²Π°ΡΡ ΡΡΠ΅Π½ΠΈΡ Π²ΡΠ΅Π³ΠΎ Π±Π»ΠΎΠΊΠ° Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ.
// ΠΏΠ»ΠΎΡ ΠΎ function getFullName(user) { const firstName = user.firstName; const lastName = user.lastName; return `${firstName} ${lastName}`; } // Ρ ΠΎΡΠΎΡΠΎ function getFullName(user) { const { firstName, lastName } = user; return `${firstName} ${lastName}`; } // ΠΎΡΠ»ΠΈΡΠ½ΠΎ function getFullName({ firstName, lastName }) { return `${firstName} ${lastName}`; }
-
5.2 ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π΄Π΅ΡΡΡΡΠΊΡΡΡΠΈΠ·Π°ΡΠΈΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ². eslint:
prefer-destructuring
const arr = [1, 2, 3, 4]; // ΠΏΠ»ΠΎΡ ΠΎ const first = arr[0]; const second = arr[1]; // Ρ ΠΎΡΠΎΡΠΎ const [first, second] = arr;
-
5.3 ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π΄Π΅ΡΡΡΡΠΊΡΡΡΠΈΠ·Π°ΡΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π΄Π»Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ, Π½ΠΎ Π½Π΅ Π΄Π΅Π»Π°ΠΉΡΠ΅ ΡΠΎΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ Ρ ΠΌΠ°ΡΡΠΈΠ²Π°ΠΌΠΈ.
ΠΠΎΡΠ΅ΠΌΡ? ΠΡ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π½ΠΎΠ²ΡΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΡΠ΅ΡΠ΅Π· Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²ΡΠ΅ΠΌΡ ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΏΠΎΡΡΠ΄ΠΎΠΊ Π±Π΅Π· ΠΏΠΎΡΠ»Π΅Π΄ΡΡΠ²ΠΈΠΉ.
// ΠΏΠ»ΠΎΡ ΠΎ function processInput(input) { // Π·Π°ΡΠ΅ΠΌ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΡΡΠ΄ΠΎ return [left, right, top, bottom]; } // ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΡΠΌΠ°ΡΡ ΠΎ ΠΏΠΎΡΡΠ΄ΠΊΠ΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΡ Π΄Π°Π½Π½ΡΡ const [left, __, top] = processInput(input); // Ρ ΠΎΡΠΎΡΠΎ function processInput(input) { // Π·Π°ΡΠ΅ΠΌ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΡΡΠ΄ΠΎ return { left, right, top, bottom }; } // ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ Π²ΡΠ±ΠΈΡΠ°Π΅ΠΌ ΡΠΎΠ»ΡΠΊΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ const { left, top } = processInput(input);
-
6.1 ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΎΠ΄ΠΈΠ½Π°ΡΠ½ΡΠ΅ ΠΊΠ°Π²ΡΡΠΊΠΈ
''
Π΄Π»Ρ ΡΡΡΠΎΠΊ. eslint:quotes
// ΠΏΠ»ΠΎΡ ΠΎ const name = "Capt. Janeway"; // ΠΏΠ»ΠΎΡ ΠΎ - Π»ΠΈΡΠ΅ΡΠ°Π» ΡΠ°Π±Π»ΠΎΠ½Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΠΈΠ½ΡΠ΅ΡΠΏΠΎΠ»ΡΡΠΈΡ ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Ρ ΡΡΡΠΎΠΊ const name = `Capt. Janeway`; // Ρ ΠΎΡΠΎΡΠΎ const name = 'Capt. Janeway';
-
6.2 Π‘ΡΡΠΎΠΊΠΈ, Ρ ΠΊΠΎΡΠΎΡΡΡ Π² ΡΡΡΠΎΡΠΊΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡΡΡ Π±ΠΎΠ»Π΅Π΅ 100 ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², Π½Π΅ ΠΏΠΈΡΡΡΡΡ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΡΡΠΎΡΠΊΠ°Ρ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠ½ΠΊΠ°ΡΠ΅Π½Π°ΡΠΈΠΈ.
ΠΠΎΡΠ΅ΠΌΡ? Π Π°Π±ΠΎΡΠ°ΡΡ Ρ ΡΠ°Π·Π±ΠΈΡΡΠΌΠΈ ΡΡΡΠΎΠΊΠ°ΠΌΠΈ Π½Π΅ΡΠ΄ΠΎΠ±Π½ΠΎ ΠΈ ΡΡΠΎ Π·Π°ΡΡΡΠ΄Π½ΡΠ΅Ρ ΠΏΠΎΠΈΡΠΊ ΠΏΠΎ ΠΊΠΎΠ΄Ρ.
// ΠΏΠ»ΠΎΡ ΠΎ const errorMessage = 'This is a super long error that was thrown because \ of Batman. When you stop to think about how Batman had anything to do \ with this, you would get nowhere \ fast.'; // ΠΏΠ»ΠΎΡ ΠΎ const errorMessage = 'This is a super long error that was thrown because ' + 'of Batman. When you stop to think about how Batman had anything to do ' + 'with this, you would get nowhere fast.'; // Ρ ΠΎΡΠΎΡΠΎ const errorMessage = 'This is a super long error that was thrown because of Batman. When you stop to think about how Batman had anything to do with this, you would get nowhere fast.';
-
6.3 ΠΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΡΡΡΠΎΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΌ ΠΏΡΡΡΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠ°Π±Π»ΠΎΠ½Π½ΡΠ΅ ΡΡΡΠΎΠΊΠΈ Π²ΠΌΠ΅ΡΡΠΎ ΠΊΠΎΠ½ΠΊΠ°ΡΠ΅Π½Π°ΡΠΈΠΈ. eslint:
prefer-template
template-curly-spacing
ΠΠΎΡΠ΅ΠΌΡ? Π¨Π°Π±Π»ΠΎΠ½Π½ΡΠ΅ ΡΡΡΠΎΠΊΠΈ Π΄Π°ΡΡ Π²Π°ΠΌ ΡΠΈΡΠ°Π±Π΅Π»ΡΠ½ΠΎΡΡΡ, Π»Π°ΠΊΠΎΠ½ΠΈΡΠ½ΡΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΌΠΈ ΡΠΈΠΌΠ²ΠΎΠ»Π°ΠΌΠΈ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π° ΡΡΡΠΎΠΊ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΠ½ΡΠ΅ΡΠΏΠΎΠ»ΡΡΠΈΠΈ ΡΡΡΠΎΠΊΠΈ.
// ΠΏΠ»ΠΎΡ ΠΎ function sayHi(name) { return 'How are you, ' + name + '?'; } // ΠΏΠ»ΠΎΡ ΠΎ function sayHi(name) { return ['How are you, ', name, '?'].join(); } // ΠΏΠ»ΠΎΡ ΠΎ function sayHi(name) { return `How are you, ${ name }?`; } // Ρ ΠΎΡΠΎΡΠΎ function sayHi(name) { return `How are you, ${name}?`; }
- 6.4 ΠΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅
eval()
, Ρ.ΠΊ. ΡΡΠΎ ΠΎΡΠΊΡΡΠ²Π°Π΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠ΅ΠΉ. eslint:no-eval
-
6.5 ΠΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π² ΡΡΡΠΎΠΊΠ°Ρ Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠΊΡΠ°Π½ΠΈΡΡΡΡΠΈΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ. eslint:
no-useless-escape
ΠΠΎΡΠ΅ΠΌΡ? ΠΠ±ΡΠ°ΡΠ½ΡΠ΅ ΡΠ»Π΅ΡΠΈ ΡΡ ΡΠ΄ΡΠ°ΡΡ ΡΠΈΡΠ°Π±Π΅Π»ΡΠ½ΠΎΡΡΡ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ.
// ΠΏΠ»ΠΎΡ ΠΎ const foo = '\'this\' \i\s \"quoted\"'; // Ρ ΠΎΡΠΎΡΠΎ const foo = '\'this\' is "quoted"'; const foo = `my name is '${name}'`;
-
7.1 ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ Π²ΠΌΠ΅ΡΡΠΎ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΉ ΡΡΠ½ΠΊΡΠΈΠΉ. eslint:
func-style
ΠΠΎΡΠ΅ΠΌΡ? Π£ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΉ ΡΡΠ½ΠΊΡΠΈΠΉ Π΅ΡΡΡ ΠΏΠΎΠ΄ΡΡΠΌ. ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ Π΄ΠΎ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΎΠ½Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π° Π² ΡΠ°ΠΉΠ»Π΅, Π½ΠΎ ΡΡΠΎ Π²ΡΠ΅Π΄ΠΈΡ ΡΠΈΡΠ°Π±Π΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ΅. ΠΡΠ»ΠΈ Π²Ρ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ»ΠΈ, ΡΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π°ΡΡΠΎΠ»ΡΠΊΠΎ Π±ΠΎΠ»ΡΡΠΎΠ΅ ΠΈΠ»ΠΈ ΡΠ»ΠΎΠΆΠ½ΠΎΠ΅, ΡΡΠΎ ΠΌΠ΅ΡΠ°Π΅Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ ΠΎΡΡΠ°Π»ΡΠ½ΡΡ ΡΠ°ΡΡΡ ΡΠ°ΠΉΠ»Π°, ΡΠΎ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΏΡΠΈΡΠ»ΠΎ Π²ΡΠ΅ΠΌΡ ΠΈΠ·Π²Π»Π΅ΡΡ Π΅Π³ΠΎ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ. ΠΠ΅ Π·Π°Π±ΡΠ΄ΡΡΠ΅ ΡΠ²Π½ΠΎ Π½Π°Π·Π²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΡΠΎΠ³ΠΎ, ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π΅ΡΡΡ Π»ΠΈ ΠΈΠΌΡ ΠΈΠ· ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ΅ΠΉΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ (ΡΠ°ΠΊΠΎΠ΅ ΡΠ°ΡΡΠΎ Π±ΡΠ²Π°Π΅Ρ Π² ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π±ΡΠ°ΡΠ·Π΅ΡΠ°Ρ ΠΈΠ»ΠΈ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠ², ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ Babel). ΠΡΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΡΠΎΡΠ½Π΅Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΠΌΠ΅ΡΡΠΎ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΏΠΎ ΡΡΠ΅ΠΊΡ Π²ΡΠ·ΠΎΠ²ΠΎΠ². (ΠΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΠ΅)
// ΠΏΠ»ΠΎΡ ΠΎ function foo() { // ... } // ΠΏΠ»ΠΎΡ ΠΎ const foo = function () { // ... }; // Ρ ΠΎΡΠΎΡΠΎ // Π»Π΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΈΠΌΡ, ΠΎΡΠ»ΠΈΡΠ½ΠΎΠ΅ ΠΎΡ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌΠΎΠΉ(-ΡΡ ) ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ(-ΡΡ ) const foo = function uniqueMoreDescriptiveLexicalFoo() { // ... };
-
7.2 ΠΠ±ΠΎΡΠ°ΡΠΈΠ²Π°ΠΉΡΠ΅ Π² ΡΠΊΠΎΠ±ΠΊΠΈ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ. eslint:
wrap-iife
ΠΠΎΡΠ΅ΠΌΡ? ΠΠ΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌΠ°Ρ ΡΡΠ½ΠΊΡΠΈΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ Π΅Π΄ΠΈΠ½ΡΠΉ Π±Π»ΠΎΠΊ. Π§ΡΠΎΠ±Ρ ΡΡΡΠΊΠΎ ΠΏΠΎΠΊΠ°Π·Π°ΡΡ ΡΡΠΎ β ΠΎΠ±Π΅ΡΠ½ΠΈΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡ ΠΈ Π²ΡΠ·ΡΠ²Π°ΡΡΠΈΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ Π² Π΅ΡΡ ΠΎΠ΄Π½ΠΈ ΡΠΊΠΎΠ±ΠΊΠΈ. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π² ΠΌΠΈΡΠ΅ Ρ ΠΌΠΎΠ΄ΡΠ»ΡΠΌΠΈ Π²Π°ΠΌ Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ Π½ΡΠΆΠ½Ρ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ.
// ΠΠ΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌΠ°Ρ ΡΡΠ½ΠΊΡΠΈΡ (function () { console.log('Welcome to the Internet. Please follow me.'); }());
- 7.3 ΠΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΎΠ±ΡΡΠ²Π»ΡΠΉΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π² Π½Π΅ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠΌ Π±Π»ΠΎΠΊΠ΅ (
if
,while
, ΠΈ Ρ.Π΄.). ΠΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΈΡΠ²ΠΎΠΉΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ. ΠΡΠ°ΡΠ·Π΅ΡΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π²Π°Ρ ΠΊΠΎΠ΄, Π½ΠΎ Π²ΡΠ΅ ΠΎΠ½ΠΈ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΡΡΡ Π΅Π³ΠΎ ΠΏΠΎ-ΡΠ°Π·Π½ΠΎΠΌΡ. eslint:no-loop-func
-
7.4 ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: ECMA-262 ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ
Π±Π»ΠΎΠΊ
ΠΊΠ°ΠΊ ΡΠΏΠΈΡΠΎΠΊ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ. ΠΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠ΅ΠΉ.// ΠΏΠ»ΠΎΡ ΠΎ if (currentUser) { function test() { console.log('Nope.'); } } // Ρ ΠΎΡΠΎΡΠΎ let test; if (currentUser) { test = () => { console.log('Yup.'); }; }
-
7.5 ΠΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π½Π°Π·ΡΠ²Π°ΠΉΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ
arguments
. ΠΠ½ Π±ΡΠ΄Π΅Ρ ΠΈΠΌΠ΅ΡΡ ΠΏΡΠΈΠΎΡΠΈΡΠ΅Ρ Π½Π°Π΄ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌarguments
, ΠΊΠΎΡΠΎΡΡΠΉ Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ.// ΠΏΠ»ΠΎΡ ΠΎ function foo(name, options, arguments) { // ... } // Ρ ΠΎΡΠΎΡΠΎ function foo(name, options, args) { // ... }
-
7.6 ΠΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅
arguments
, Π²ΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΠΎΡΡΠ°Π²ΡΠΈΡ ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ²...
. eslint:prefer-rest-params
ΠΠΎΡΠ΅ΠΌΡ?
...
ΡΠ²Π½ΠΎ Π³ΠΎΠ²ΠΎΡΠΈΡ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΈΠΌΠ΅Π½Π½ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΠΈΠ·Π²Π»Π΅ΡΡ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΡΠ°ΠΊΠΎΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΡΠΎΠ·Π΄Π°ΡΡ Π½Π°ΡΡΠΎΡΡΠΈΠΉ ΠΌΠ°ΡΡΠΈΠ², Π° Π½Π΅ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΊΠ°ΠΊarguments
.// ΠΏΠ»ΠΎΡ ΠΎ function concatenateAll() { const args = Array.prototype.slice.call(arguments); return args.join(''); } // Ρ ΠΎΡΠΎΡΠΎ function concatenateAll(...args) { return args.join(''); }
-
7.7 ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Π·Π°ΠΏΠΈΡΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, Π° Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΠΉΡΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ.
// ΠΎΡΠ΅Π½Ρ ΠΏΠ»ΠΎΡ ΠΎ function handleThings(opts) { // ΠΠ΅Ρ! ΠΡ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ. // ΠΠ»ΠΎΡ ΠΎ Π²Π΄Π²ΠΎΠΉΠ½Π΅: Π΅ΡΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ opts Π±ΡΠ΄Π΅Ρ Π»ΠΎΠΆΠ½ΠΎΠΉ, // ΡΠΎ Π΅ΠΉ ΠΏΡΠΈΡΠ²ΠΎΠΈΡΡΡ ΠΏΡΡΡΠΎΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ, Π° Π½Π΅ ΡΠΎ ΡΡΠΎ Π²Ρ Ρ ΠΎΡΠ΅Π»ΠΈ. // ΠΡΠΎ ΠΏΡΠΈΠ²Π΅Π΄ΡΡ ΠΊ ΠΊΠΎΠ²Π°ΡΠ½ΡΠΌ ΠΎΡΠΈΠ±ΠΊΠ°ΠΌ. opts = opts || {}; // ... } // Π²ΡΡ Π΅ΡΡ ΠΏΠ»ΠΎΡ ΠΎ function handleThings(opts) { if (opts === void 0) { opts = {}; } // ... } // Ρ ΠΎΡΠΎΡΠΎ function handleThings(opts = {}) { // ... }
-
7.8 ΠΠ·Π±Π΅Π³Π°ΠΉΡΠ΅ ΠΏΠΎΠ±ΠΎΡΠ½ΡΡ ΡΡΡΠ΅ΠΊΡΠΎΠ² Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ.
ΠΠΎΡΠ΅ΠΌΡ? Π ΡΠ°ΠΊ Π²ΡΡ ΠΏΠΎΠ½ΡΡΠ½ΠΎ.
var b = 1; // ΠΏΠ»ΠΎΡ ΠΎ function count(a = b++) { console.log(a); } count(); // 1 count(); // 2 count(3); // 3 count(); // 3
-
7.9 ΠΡΠ΅Π³Π΄Π° Π²ΡΡΠ°Π²Π»ΡΠΉΡΠ΅ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΌΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ. eslint:
default-param-last
// ΠΏΠ»ΠΎΡ ΠΎ function handleThings(opts = {}, name) { // ... } // Ρ ΠΎΡΠΎΡΠΎ function handleThings(name, opts = {}) { // ... }
-
7.10 ΠΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΡΡΠ½ΠΊΡΠΈΠΉ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π½ΠΎΠ²ΡΡ ΡΡΠ½ΠΊΠΈΠΉ. eslint:
no-new-func
ΠΠΎΡΠ΅ΠΌΡ? Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π² ΡΠ°ΠΊΠΎΠΌ Π΄ΡΡ Π΅ Π²ΡΡΠΈΡΠ»ΡΠ΅Ρ ΡΡΡΠΎΠΊΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ
eval()
, ΠΈΠ·-Π·Π° ΡΠ΅Π³ΠΎ ΠΎΡΠΊΡΡΠ²Π°ΡΡΡΡ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ.// ΠΏΠ»ΠΎΡ ΠΎ var add = new Function('a', 'b', 'return a + b'); // Π²ΡΡ Π΅ΡΡ ΠΏΠ»ΠΎΡ ΠΎ var subtract = Function('a', 'b', 'return a - b');
-
7.11 ΠΡΡΡΡΠΏΡ ΠΏΡΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ. eslint:
space-before-function-paren
space-before-blocks
ΠΠΎΡΠ΅ΠΌΡ? ΠΠ΄Π½ΠΎΡΠΎΠ΄Π½ΠΎΡΡΡ ΠΊΠΎΠ΄Π° β ΡΡΠΎ Ρ ΠΎΡΠΎΡΠΎ. ΠΠ°ΠΌ Π½Π΅ Π½Π°Π΄ΠΎ Π±ΡΠ΄Π΅Ρ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΠΈΠ»ΠΈ ΡΠ΄Π°Π»ΡΡΡ ΠΏΡΠΎΠ±Π΅Π» ΠΏΡΠΈ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΡΡΠΈΠΈ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ.
// ΠΏΠ»ΠΎΡ ΠΎ const f = function(){}; const g = function (){}; const h = function() {}; // Ρ ΠΎΡΠΎΡΠΎ const x = function () {}; const y = function a() {};
-
7.12 ΠΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΠΉΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ. eslint:
no-param-reassign
ΠΠΎΡΠ΅ΠΌΡ? ΠΠ°Π½ΠΈΠΏΡΠ»ΡΡΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ, ΠΏΡΠΈΡ ΠΎΠ΄ΡΡΠΈΠΌΠΈ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ², ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ·ΡΠ²Π°ΡΡ Π½Π΅ΠΆΠ΅Π»Π°ΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΏΠΎΠ±ΠΎΡΠ½ΡΠ΅ ΡΡΡΠ΅ΠΊΡΡ Π² Π²ΡΠ·ΡΠ²Π°ΡΡΠ΅ΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ.
// ΠΏΠ»ΠΎΡ ΠΎ function f1(obj) { obj.key = 1; } // Ρ ΠΎΡΠΎΡΠΎ function f2(obj) { const key = Object.prototype.hasOwnProperty.call(obj, 'key') ? obj.key : 1; }
-
7.13 ΠΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΏΠ΅ΡΠ΅Π½Π°Π·Π½Π°ΡΠ°ΠΉΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ. eslint:
no-param-reassign
ΠΠΎΡΠ΅ΠΌΡ? ΠΠ΅ΡΠ΅Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΌΠΎΠ³ΡΡ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎΠΌΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΏΡΠΈ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠΈ ΠΊ
arguments
. ΠΡΠΎ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ·ΡΠ²Π°ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π² V8.// ΠΏΠ»ΠΎΡ ΠΎ function f1(a) { a = 1; // ... } function f2(a) { if (!a) { a = 1; } // ... } // Ρ ΠΎΡΠΎΡΠΎ function f3(a) { const b = a || 1; // ... } function f4(a = 1) { // ... }
-
7.14 ΠΡΠ΄Π°Π²Π°ΠΉΡΠ΅ ΠΏΡΠ΅Π΄ΠΏΠΎΡΡΠ΅Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ
...
ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ Π²Π°ΡΠΈΠ°ΡΠΈΠ²Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ. eslint:prefer-spread
ΠΠΎΡΠ΅ΠΌΡ? ΠΡΠΎ ΡΠΈΡΠ΅, Π²Π°ΠΌ Π½Π΅ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ, ΠΈ Π½Π΅ ΡΠ°ΠΊ ΠΏΡΠΎΡΡΠΎ ΡΠΎΡΡΠ°Π²ΠΈΡΡ
new
Ρapply
.// ΠΏΠ»ΠΎΡ ΠΎ const x = [1, 2, 3, 4, 5]; console.log.apply(console, x); // Ρ ΠΎΡΠΎΡΠΎ const x = [1, 2, 3, 4, 5]; console.log(...x); // ΠΏΠ»ΠΎΡ ΠΎ new (Function.prototype.bind.apply(Date, [null, 2016, 8, 5])); // Ρ ΠΎΡΠΎΡΠΎ new Date(...[2016, 8, 5]);
-
7.15 Π€ΡΠ½ΠΊΡΠΈΠΈ Ρ ΠΌΠ½ΠΎΠ³ΠΎΡΡΡΠΎΡΠ½ΡΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΈΠ»ΠΈ Π·Π°ΠΏΡΡΠΊΠΎΠΌ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΡΠ°ΠΊΠΈΠ΅ ΠΆΠ΅ ΠΎΡΡΡΡΠΏΡ, ΠΊΠ°ΠΊ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΠΌΠ½ΠΎΠ³ΠΎΡΡΡΠΎΡΠ½ΡΠ΅ ΡΠΏΠΈΡΠΊΠΈ Π² ΡΡΠΎΠΌ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π΅: Ρ ΠΊΠ°ΠΆΠ΄ΡΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠΌ Π½Π° ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅, Ρ Π·Π°ΠΏΡΡΠΎΠΉ Π² ΠΊΠΎΠ½ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°. eslint:
function-paren-newline
// ΠΏΠ»ΠΎΡ ΠΎ function foo(bar, baz, quux) { // ... } // Ρ ΠΎΡΠΎΡΠΎ function foo( bar, baz, quux, ) { // ... } // ΠΏΠ»ΠΎΡ ΠΎ console.log(foo, bar, baz); // Ρ ΠΎΡΠΎΡΠΎ console.log( foo, bar, baz, );
-
8.1 ΠΠΎΠ³Π΄Π° Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ΅ Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²Π°), ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΡΡΠ΅Π»ΠΎΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ. eslint:
prefer-arrow-callback
,arrow-spacing
ΠΠΎΡΠ΅ΠΌΡ? Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΡΠΎΠ·Π΄Π°ΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅
this
, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΡ ΠΎΠ±ΡΡΠ½ΠΎ Ρ ΠΎΡΠΈΠΌ, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΡΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΡΠΎΡΠΊΠΈΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ.ΠΠΎΡΠ΅ΠΌΡ Π±Ρ ΠΈ Π½Π΅Ρ? ΠΡΠ»ΠΈ Ρ Π²Π°Ρ Π΅ΡΡΡ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΠ»ΠΎΠΆΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΡΠΈΡΡ ΡΡΡ Π»ΠΎΠ³ΠΈΠΊΡ Π²Π½ΡΡΡΡ Π΅Ρ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ.
// ΠΏΠ»ΠΎΡ ΠΎ [1, 2, 3].map(function (x) { const y = x + 1; return x * y; }); // Ρ ΠΎΡΠΎΡΠΎ [1, 2, 3].map((x) => { const y = x + 1; return x * y; });
-
8.2 ΠΡΠ»ΠΈ ΡΠ΅Π»ΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ°, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΠ΅Π³ΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π±Π΅Π· ΠΏΠΎΠ±ΠΎΡΠ½ΡΡ ΡΡΡΠ΅ΠΊΡΠΎΠ², ΡΠΎ ΠΎΠΏΡΡΡΠΈΡΠ΅ ΡΠΈΠ³ΡΡΠ½ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π½Π΅ΡΠ²Π½ΠΎΠ΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ΅Π½ΠΈΠ΅. Π ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, ΡΠΎΡ ΡΠ°Π½ΠΈΡΠ΅ ΡΠΈΠ³ΡΡΠ½ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ
return
. eslint:arrow-parens
,arrow-body-style
ΠΠΎΡΠ΅ΠΌΡ? Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠ°Ρ Π°Ρ. ΠΠΎΠ³Π΄Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠ½ΠΊΡΠΈΠΉ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½Ρ Π²ΠΌΠ΅ΡΡΠ΅, ΡΠΎ ΡΡΠΎ Π»ΡΡΡΠ΅ ΡΠΈΡΠ°Π΅ΡΡΡ.
// ΠΏΠ»ΠΎΡ ΠΎ [1, 2, 3].map((number) => { const nextNumber = number + 1; `A string containing the ${nextNumber}.`; }); // Ρ ΠΎΡΠΎΡΠΎ [1, 2, 3].map((number) => `A string containing the ${number + 1}.`); // Ρ ΠΎΡΠΎΡΠΎ [1, 2, 3].map((number) => { const nextNumber = number + 1; return `A string containing the ${nextNumber}.`; }); // Ρ ΠΎΡΠΎΡΠΎ [1, 2, 3].map((number, index) => ({ [index]: number, })); // ΠΠ΅ΡΠ²Π½ΡΠΉ Π²ΠΎΠ·Π²ΡΠ°Ρ Ρ ΠΏΠΎΠ±ΠΎΡΠ½ΡΠΌΠΈ ΡΡΡΠ΅ΠΊΡΠ°ΠΌΠΈ function foo(callback) { const val = callback(); if (val === true) { // Π‘Π΄Π΅Π»Π°ΡΡ ΡΡΠΎ-ΡΠΎ, Π΅ΡΠ»ΠΈ ΡΡΠ½ΠΊΡΠΈΡ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²Π° Π²Π΅ΡΠ½ΡΡ true } } let bool = false; // ΠΏΠ»ΠΎΡ ΠΎ foo(() => bool = true); // Ρ ΠΎΡΠΎΡΠΎ foo(() => { bool = true; });
-
8.3 Π ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°ΡΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΡΡΠΎΠΊΠ°Ρ , ΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±Π΅ΡΠ½ΡΡΡ Π΅Π³ΠΎ Π² ΡΠΊΠΎΠ±ΠΊΠΈ Π΄Π»Ρ Π»ΡΡΡΠ΅ΠΉ ΡΠΈΡΠ°Π΅ΠΌΠΎΡΡΠΈ.
ΠΠΎΡΠ΅ΠΌΡ? ΠΡΠΎ ΡΡΡΠΊΠΎ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, Π³Π΄Π΅ ΡΡΠ½ΠΊΡΠΈΡ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ ΠΈ Π³Π΄Π΅ Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°Π΅ΡΡΡ.
// ΠΏΠ»ΠΎΡ ΠΎ ['get', 'post', 'put'].map((httpMethod) => Object.prototype.hasOwnProperty.call( httpMagicObjectWithAVeryLongName, httpMethod, ) ); // Ρ ΠΎΡΠΎΡΠΎ ['get', 'post', 'put'].map((httpMethod) => ( Object.prototype.hasOwnProperty.call( httpMagicObjectWithAVeryLongName, httpMethod, ) ));
-
8.4 ΠΡΠ΅Π³Π΄Π° ΠΎΠ±ΠΎΡΠ°ΡΠΈΠ²Π°ΠΉΡΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ ΠΊΡΡΠ³Π»ΡΠΌΠΈ ΡΠΊΠΎΠ±ΠΊΠ°ΠΌΠΈ Π΄Π»Ρ ΡΡΠ½ΠΎΡΡΠΈ ΠΈ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΡΡΠΈ. eslint:
arrow-parens
ΠΠΎΡΠ΅ΠΌΡ? ΠΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡΡΠ΅Ρ ΡΠ°Π·Π»ΠΈΡΠΈΡ ΠΏΡΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΠΈ ΠΈΠ»ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ².
// ΠΏΠ»ΠΎΡ ΠΎ [1, 2, 3].map(x => x * x); // Ρ ΠΎΡΠΎΡΠΎ [1, 2, 3].map((x) => x * x); // ΠΏΠ»ΠΎΡ ΠΎ [1, 2, 3].map(number => ( `A long string with the ${number}. Itβs so long that we donβt want it to take up space on the .map line!` )); // Ρ ΠΎΡΠΎΡΠΎ [1, 2, 3].map((number) => ( `A long string with the ${number}. Itβs so long that we donβt want it to take up space on the .map line!` )); // ΠΏΠ»ΠΎΡ ΠΎ [1, 2, 3].map(x => { const y = x + 1; return x * y; }); // Ρ ΠΎΡΠΎΡΠΎ [1, 2, 3].map((x) => { const y = x + 1; return x * y; });
-
8.5 ΠΠ·Π±Π΅Π³Π°ΠΉΡΠ΅ ΡΡ ΠΎΠΆΠ΅ΡΡΠΈ ΡΡΡΠ΅Π»ΠΎΡΠ½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ (
=>
) Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ°ΠΌΠΈ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ (<=
,>=
). eslint:no-confusing-arrow
// ΠΏΠ»ΠΎΡ ΠΎ const itemHeight = (item) => item.height <= 256 ? item.largeSize : item.smallSize; // ΠΏΠ»ΠΎΡ ΠΎ const itemHeight = (item) => item.height >= 256 ? item.largeSize : item.smallSize; // Ρ ΠΎΡΠΎΡΠΎ const itemHeight = (item) => (item.height <= 256 ? item.largeSize : item.smallSize); // Ρ ΠΎΡΠΎΡΠΎ const itemHeight = (item) => { const { height, largeSize, smallSize } = item; return height <= 256 ? largeSize : smallSize; };
-
8.6 ΠΠ°ΡΠΈΠΊΡΠΈΡΡΠΉΡΠ΅ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ΅Π»Π° ΡΡΡΠ΅Π»ΠΎΡΠ½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Ρ Π½Π΅ΡΠ²Π½ΡΠΌ Π²ΠΎΠ·Π²ΡΠ°ΡΠΎΠΌ. eslint:
implicit-arrow-linebreak
// ΠΏΠ»ΠΎΡ ΠΎ (foo) => bar; (foo) => (bar); // Ρ ΠΎΡΠΎΡΠΎ (foo) => bar; (foo) => (bar); (foo) => ( bar )
-
9.1 ΠΡΠ΅Π³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅
class
. ΠΠ·Π±Π΅Π³Π°ΠΉΡΠ΅ ΠΏΡΡΠΌΡΡ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΡΡΠΈΠΉ Ρprototype
.ΠΠΎΡΠ΅ΠΌΡ? Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ
class
ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΡΠ°ΡΠΊΠΈΠΌ ΠΈ ΠΏΠΎΠ½ΡΡΠ½ΡΠΌ.// ΠΏΠ»ΠΎΡ ΠΎ function Queue(contents = []) { this.queue = [...contents]; } Queue.prototype.pop = function () { const value = this.queue[0]; this.queue.splice(0, 1); return value; }; // Ρ ΠΎΡΠΎΡΠΎ class Queue { constructor(contents = []) { this.queue = [...contents]; } pop() { const value = this.queue[0]; this.queue.splice(0, 1); return value; } }
-
9.2 ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅
extends
Π΄Π»Ρ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ.ΠΠΎΡΠ΅ΠΌΡ? ΠΡΠΎ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ ΠΏΡΠΎΡΠΎΡΠΈΠΏΠ°, Π½Π΅ Π½Π°ΡΡΡΠ°Ρ
instanceof
.// ΠΏΠ»ΠΎΡ ΠΎ const inherits = require('inherits'); function PeekableQueue(contents) { Queue.apply(this, contents); } inherits(PeekableQueue, Queue); PeekableQueue.prototype.peek = function () { return this.queue[0]; }; // Ρ ΠΎΡΠΎΡΠΎ class PeekableQueue extends Queue { peek() { return this.queue[0]; } }
-
9.3 ΠΠ΅ΡΠΎΠ΄Ρ ΠΌΠΎΠ³ΡΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ
this
, ΡΡΠΎΠ±Ρ Π΄Π΅Π»Π°ΡΡ ΡΠ΅ΠΏΠΎΡΠΊΠΈ Π²ΡΠ·ΠΎΠ²ΠΎΠ².// ΠΏΠ»ΠΎΡ ΠΎ Jedi.prototype.jump = function () { this.jumping = true; return true; }; Jedi.prototype.setHeight = function (height) { this.height = height; }; const luke = new Jedi(); luke.jump(); // => true luke.setHeight(20); // => undefined // Ρ ΠΎΡΠΎΡΠΎ class Jedi { jump() { this.jumping = true; return this; } setHeight(height) { this.height = height; return this; } } const luke = new Jedi(); luke.jump() .setHeight(20);
-
9.4 ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΠ²ΠΎΠΉ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄
toString()
, ΠΏΡΠΎΡΡΠΎ ΡΠ±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ ΠΎΠ½ ΡΡΠΏΠ΅ΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΈ Π½Π΅ ΡΠΎΠ·Π΄Π°ΡΡ Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΠΏΠΎΠ±ΠΎΡΠ½ΡΡ ΡΡΡΠ΅ΠΊΡΠΎΠ².class Jedi { constructor(options = {}) { this.name = options.name || 'no name'; } getName() { return this.name; } toString() { return `Jedi - ${this.getName()}`; } }
-
9.5 Π£ ΠΊΠ»Π°ΡΡΠΎΠ² Π΅ΡΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, Π΅ΡΠ»ΠΈ ΠΎΠ½ Π½Π΅ Π·Π°Π΄Π°Π½ ΡΠ²Π½ΠΎ. ΠΠΎΠΆΠ½ΠΎ ΠΎΠΏΡΡΡΠΈΡΡ ΠΏΡΡΡΠΎΠΉ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΈΠ»ΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π΅Π»Π΅Π³ΠΈΡΡΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΎΠΌΡ ΠΊΠ»Π°ΡΡΡ. eslint:
no-useless-constructor
// ΠΏΠ»ΠΎΡ ΠΎ class Jedi { constructor() {} getName() { return this.name; } } // ΠΏΠ»ΠΎΡ ΠΎ class Rey extends Jedi { constructor(...args) { super(...args); } } // Ρ ΠΎΡΠΎΡΠΎ class Rey extends Jedi { constructor(...args) { super(...args); this.name = 'Rey'; } }
-
9.6 ΠΠ·Π±Π΅Π³Π°ΠΉΡΠ΅ Π΄ΡΠ±Π»ΠΈΡΡΡΡΠΈΡ ΡΠ»Π΅Π½ΠΎΠ² ΠΊΠ»Π°ΡΡΠ°. eslint:
no-dupe-class-members
ΠΠΎΡΠ΅ΠΌΡ? ΠΡΠ»ΠΈ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΡΠ»Π΅Π½Π° ΠΊΠ»Π°ΡΡΠ° ΠΏΠΎΠ²ΡΠΎΡΡΠ΅ΡΡΡ, Π±Π΅Π· ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π΅. ΠΠ°Π»ΠΈΡΠΈΠ΅ Π΄ΡΠ±Π»ΠΈΠΊΠ°ΡΠΎΠ² ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ²Π΅Π΄ΡΡ ΠΊ ΠΎΡΠΈΠ±ΠΊΠ΅.
// ΠΏΠ»ΠΎΡ ΠΎ class Foo { bar() { return 1; } bar() { return 2; } } // Ρ ΠΎΡΠΎΡΠΎ class Foo { bar() { return 1; } } // Ρ ΠΎΡΠΎΡΠΎ class Foo { bar() { return 2; } }
-
9.7 ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ
this
ΠΈΠ»ΠΈ Π±ΡΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½Π½ΡΠΌ Π² ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΌΠ΅ΡΠΎΠ΄, Π΅ΡΠ»ΠΈ ΡΠΎΠ»ΡΠΊΠΎ Π²Π½Π΅ΡΠ½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΈΠ»ΠΈ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Π½Π΅ ΡΡΠ΅Π±ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΡ Π½Π΅ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ². ΠΡΠ΄ΡΡΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ°, ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎ ΠΎΠ½ Π²Π΅Π΄ΡΡ ΡΠ΅Π±Ρ ΠΏΠΎ-ΡΠ°Π·Π½ΠΎΠΌΡ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠ²ΠΎΠΉΡΡΠ² ΠΏΠΎΠ»ΡΡΠ°ΡΠ΅Π»Ρ. eslint:class-methods-use-this
// ΠΏΠ»ΠΎΡ ΠΎ class Foo { bar() { console.log('bar'); } } // Ρ ΠΎΡΠΎΡΠΎ - ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ this class Foo { bar() { console.log(this.bar); } } // Ρ ΠΎΡΠΎΡΠΎ - ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π΅ΡΡΡ class Foo { constructor() { // ... } } // Ρ ΠΎΡΠΎΡΠΎ - ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ this class Foo { static bar() { console.log('bar'); } }
-
10.1 ΠΡΠ΅Π³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ (
import
/export
) Π²ΠΌΠ΅ΡΡΠΎ Π½Π΅ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ ΠΌΠΎΠ΄ΡΠ»ΡΠ½ΡΡ ΡΠΈΡΡΠ΅ΠΌ. ΠΡ Π²ΡΠ΅Π³Π΄Π° ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΡΠ°Π½ΡΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄ Π² Π²Π°ΡΡ Π»ΡΠ±ΠΈΠΌΡΡ ΠΌΠΎΠ΄ΡΠ»ΡΠ½ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ.ΠΠΎΡΠ΅ΠΌΡ? ΠΠΎΠ΄ΡΠ»ΠΈ β ΡΡΠΎ Π±ΡΠ΄ΡΡΠ΅Π΅. ΠΠ°Π²Π°ΠΉΡΠ΅ Π½Π°ΡΠ½ΡΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π±ΡΠ΄ΡΡΠ΅Π΅ ΡΠΆΠ΅ ΡΠ΅ΠΉΡΠ°Ρ!
// ΠΏΠ»ΠΎΡ ΠΎ const AirbnbStyleGuide = require('./AirbnbStyleGuide'); module.exports = AirbnbStyleGuide.es6; // ok import AirbnbStyleGuide from './AirbnbStyleGuide'; export default AirbnbStyleGuide.es6; // ΠΎΡΠ»ΠΈΡΠ½ΠΎ import { es6 } from './AirbnbStyleGuide'; export default es6;
-
10.2 ΠΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΈΠΌΠΏΠΎΡΡ ΡΠ΅ΡΠ΅Π·
*
.ΠΠΎΡΠ΅ΠΌΡ? ΠΡΠΎ Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅Ρ, ΡΡΠΎ Ρ Π²Π°Ρ Π΅ΡΡΡ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ ΡΠΊΡΠΏΠΎΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ.
// ΠΏΠ»ΠΎΡ ΠΎ import * as AirbnbStyleGuide from './AirbnbStyleGuide'; // Ρ ΠΎΡΠΎΡΠΎ import AirbnbStyleGuide from './AirbnbStyleGuide';
-
10.3 ΠΠ΅ ΡΠΊΡΠΏΠΎΡΡΠΈΡΡΠΉΡΠ΅ ΠΏΡΡΠΌΠΎ ΠΈΠ· ΠΈΠΌΠΏΠΎΡΡΠ°.
ΠΠΎΡΠ΅ΠΌΡ? ΠΠ΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ, ΡΡΠΎ Π·Π°ΠΏΠΈΡΡ Π² ΠΎΠ΄Π½Ρ ΡΡΡΠΎΠΊΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΡΠ°ΡΠΊΠΎΠΉ, ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΡΡΡΠΎΠΊΠΈ Π΄Π΅Π»Π°Π΅Ρ Π²Π΅ΡΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΠΌΠΈ.
// ΠΏΠ»ΠΎΡ ΠΎ // ΡΠ°ΠΉΠ» es6.js export { es6 as default } from './AirbnbStyleGuide'; // Ρ ΠΎΡΠΎΡΠΎ // ΡΠ°ΠΉΠ» es6.js import { es6 } from './AirbnbStyleGuide'; export default es6;
-
10.4 ΠΠΌΠΏΠΎΡΡΠΈΡΡΠΉΡΠ΅ ΠΈΠ· ΠΏΡΡΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π·. eslint:
no-duplicate-imports
ΠΠΎΡΠ΅ΠΌΡ? ΠΠ°Π»ΠΈΡΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΡΡΠΎΠΊ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΡΡ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΡΠ°ΠΉΠ»Π°, ΠΌΠΎΠΆΠ΅Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΠΊΠΎΠ΄ Π½Π΅ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΠΌ.
// ΠΏΠ»ΠΎΡ ΠΎ import foo from 'foo'; // β¦ ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ Π΄ΡΡΠ³ΠΈΠ΅ ΠΈΠΌΠΏΠΎΡΡΡ β¦ // import { named1, named2 } from 'foo'; // Ρ ΠΎΡΠΎΡΠΎ import foo, { named1, named2 } from 'foo'; // Ρ ΠΎΡΠΎΡΠΎ import foo, { named1, named2, } from 'foo';
-
10.5 ΠΠ΅ ΡΠΊΡΠΏΠΎΡΡΠΈΡΡΠΉΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅. eslint:
import/no-mutable-exports
ΠΠΎΡΠ΅ΠΌΡ? ΠΠΎΠΎΠ±ΡΠ΅, ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΠ·Π±Π΅Π³Π°ΡΡ ΠΌΡΡΠ°ΡΠΈΠΈ, Π² ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ ΠΏΡΠΈ ΡΠΊΡΠΏΠΎΡΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ . ΠΠ΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ, ΡΡΠΎ ΡΡΠ° ΡΠ΅Ρ Π½ΠΈΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠ° Π² ΡΠ΅Π΄ΠΊΠΈΡ ΡΠ»ΡΡΠ°ΡΡ , Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΡΠΊΡΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π°.
// ΠΏΠ»ΠΎΡ ΠΎ let foo = 3; export { foo }; // Ρ ΠΎΡΠΎΡΠΎ const foo = 3; export { foo };
-
10.6 Π ΠΌΠΎΠ΄ΡΠ»ΡΡ Ρ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΌ ΡΠΊΡΠΏΠΎΡΡΠΎΠΌ ΠΏΡΠ΅Π΄ΠΏΠΎΡΡΠΈΡΠ΅Π»ΡΠ½Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΊΡΠΏΠΎΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, Π° Π½Π΅ ΡΠΊΡΠΏΠΎΡΡ ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ. eslint:
import/prefer-default-export
ΠΠΎΡΠ΅ΠΌΡ? ΠΠ»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΠΏΠΎΠΎΡΡΡΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° ΡΠ°ΠΉΠ»ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π±Ρ ΡΠΊΡΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π»ΠΈ ΠΎΠ΄Π½Ρ ΡΡΡΠ½ΠΎΡΡΡ, Ρ.ΠΊ. ΡΡΠΎ Π»ΡΡΡΠ΅ Π΄Π»Ρ ΡΠΈΡΠ°Π±Π΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ ΠΊΠΎΠ΄Π°.
// ΠΏΠ»ΠΎΡ ΠΎ export function foo() {} // Ρ ΠΎΡΠΎΡΠΎ export default function foo() {}
-
10.7 ΠΠΎΠΌΠ΅ΡΡΠΈΡΠ΅ Π²ΡΠ΅ ΠΈΠΌΠΏΠΎΡΡΡ Π²ΡΡΠ΅ ΠΎΡΡΠ°Π»ΡΠ½ΡΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ. eslint:
import/first
ΠΠΎΡΠ΅ΠΌΡ? Π’Π°ΠΊ ΠΊΠ°ΠΊ
import
ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ ΠΏΠΎΠ΄ΡΡΠΌΠΎΠΌ, ΡΠΎ Ρ ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΈΡ Π²ΡΠ΅Ρ Π² Π½Π°ΡΠ°Π»Π΅ ΡΠ°ΠΉΠ»Π° ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ°Π΅Ρ ΠΎΡ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ.// ΠΏΠ»ΠΎΡ ΠΎ import foo from 'foo'; foo.init(); import bar from 'bar'; // Ρ ΠΎΡΠΎΡΠΎ import foo from 'foo'; import bar from 'bar'; foo.init();
-
10.8 ΠΠΌΠΏΠΎΡΡΡ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΡΡΠΎΠΊΠ°Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Ρ ΠΎΡΡΡΡΠΏΠ°ΠΌΠΈ ΠΊΠ°ΠΊ Ρ ΠΌΠ½ΠΎΠ³ΠΎΡΡΡΠΎΡΠ½ΡΡ Π»ΠΈΡΠ΅ΡΠ°Π»ΠΎΠ² ΠΌΠ°ΡΡΠΈΠ²Π° ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ°. eslint:
object-curly-newline
ΠΠΎΡΠ΅ΠΌΡ? Π€ΠΈΠ³ΡΡΠ½ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ ΡΠ»Π΅Π΄ΡΡΡ ΡΠ΅ΠΌ ΠΆΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π°ΠΌ ΠΎΡΡΡΡΠΏΠ° ΠΊΠ°ΠΊ ΠΈ Π»ΡΠ±Π°Ρ Π΄ΡΡΠ³Π°Ρ ΡΠΈΠ³ΡΡΠ½Π°Ρ ΡΠΊΠΎΠ±ΠΊΠ° Π±Π»ΠΎΠΊΠ° Π² ΡΡΠΎΠΌ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π΅, ΡΠΎΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ ΠΊΠ°ΡΠ°Π΅ΡΡΡ Π²ΠΈΡΡΡΠΈΡ Π·Π°ΠΏΡΡΡΡ .
// ΠΏΠ»ΠΎΡ ΠΎ import {longNameA, longNameB, longNameC, longNameD, longNameE} from 'path'; // Ρ ΠΎΡΠΎΡΠΎ import { longNameA, longNameB, longNameC, longNameD, longNameE, } from 'path';
-
10.9 ΠΠ°ΠΏΡΠ΅ΡΠΈΡΠ΅ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Π·Π°Π³ΡΡΠ·ΡΠΈΠΊΠ° Webpack Π² ΠΈΠΌΠΏΠΎΡΡΠ΅. eslint:
import/no-webpack-loader-syntax
ΠΠΎΡΠ΅ΠΌΡ? ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Webpack ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° ΡΠ²ΡΠ·ΡΠ²Π°Π΅Ρ ΠΊΠΎΠ΄ Ρ ΡΠΏΠ°ΠΊΠΎΠ²ΡΠΈΠΊΠΎΠΌ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ. ΠΡΠ΅Π΄ΠΏΠΎΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Π·Π°Π³ΡΡΠ·ΡΠΈΠΊΠ° Π²
webpack.config.js
.// ΠΏΠ»ΠΎΡ ΠΎ import fooSass from 'css!sass!foo.scss'; import barCss from 'style!css!bar.css'; // Ρ ΠΎΡΠΎΡΠΎ import fooSass from 'foo.scss'; import barCss from 'bar.css';
-
10.10 ΠΠ΅ ΡΠΊΠ°Π·ΡΠ²Π°ΠΉΡΠ΅ JavaScript ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ² eslint:
import/extensions
ΠΠΎΡΠ΅ΠΌΡ? ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠΉ ΠΏΡΠ΅ΠΏΡΡΡΡΠ²ΡΠ΅Ρ ΡΠ΅ΡΠ°ΠΊΡΠΎΡΠΈΠ½Π³Ρ ΠΈ Π½Π΅ΡΠ΅Π»Π΅ΡΠΎΠΎΠ±ΡΠ°Π·Π½ΠΎ ΠΆΡΡΡΠΊΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡΡΡΡ Π΄Π΅ΡΠ°Π»ΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΌΠΎΠ΄ΡΠ»Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π²Ρ ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠ΅ΡΠ΅ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Π΅.
// ΠΏΠ»ΠΎΡ ΠΎ import foo from './foo.js'; import bar from './bar.jsx'; import baz from './baz/index.jsx'; // Ρ ΠΎΡΠΎΡΠΎ import foo from './foo'; import bar from './bar'; import baz from './baz';
-
11.1 ΠΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΈΡΠ΅ΡΠ°ΡΠΎΡΡ. ΠΡΠΈΠΌΠ΅Π½ΡΠΉΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π²ΡΡΡΠ΅Π³ΠΎ ΠΏΠΎΡΡΠ΄ΠΊΠ° Π²ΠΌΠ΅ΡΡΠΎ ΡΠ°ΠΊΠΈΡ ΡΠΈΠΊΠ»ΠΎΠ² ΠΊΠ°ΠΊ
for-in
ΠΈΠ»ΠΈfor-of
. eslint:no-iterator
no-restricted-syntax
ΠΠΎΡΠ΅ΠΌΡ? ΠΡΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΡΠΎΠ±Π»ΡΠ΄Π΅Π½ΠΈΠ΅ Π½Π°ΡΠ΅Π³ΠΎ ΠΏΡΠ°Π²ΠΈΠ»Π° ΠΎ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½ΠΎΡΡΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ . Π Π°Π±ΠΎΡΠ°ΡΡ Ρ ΡΠΈΡΡΡΠΌΠΈ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΏΡΠΎΡΠ΅, ΡΠ΅ΠΌ Ρ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ Ρ ΠΏΠΎΠ±ΠΎΡΠ½ΡΠΌΠΈ ΡΡΡΠ΅ΠΊΡΠ°ΠΌΠΈ.
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅
map()
/every()
/filter()
/find()
/findIndex()
/reduce()
/some()
/ ... Π΄Π»Ρ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΈ ΠΏΠΎ ΠΌΠ°ΡΡΠΈΠ²Π°ΠΌ, Π°Object.keys()
/Object.values()
/Object.entries()
Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ², Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΡΠΎΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠ΅ΡΠΈΡΠΎΠ²Π°ΡΡΡΡ ΠΏΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌ.const numbers = [1, 2, 3, 4, 5]; // ΠΏΠ»ΠΎΡ ΠΎ let sum = 0; for (let num of numbers) { sum += num; } sum === 15; // Ρ ΠΎΡΠΎΡΠΎ let sum = 0; numbers.forEach((num) => { sum += num; }); sum === 15; // ΠΎΡΠ»ΠΈΡΠ½ΠΎ (ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠΈΠ»Ρ ΡΡΠ½ΠΊΡΠΈΠΉ) const sum = numbers.reduce((total, num) => total + num, 0); sum === 15; // ΠΏΠ»ΠΎΡ ΠΎ const increasedByOne = []; for (let i = 0; i < numbers.length; i++) { increasedByOne.push(numbers[i] + 1); } // Ρ ΠΎΡΠΎΡΠΎ const increasedByOne = []; numbers.forEach((num) => { increasedByOne.push(num + 1); }); // ΠΎΡΠ»ΠΈΡΠ½ΠΎ (ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΠΉΡΠ΅ Π² ΡΠΎΠΌ ΠΆΠ΅ Π΄ΡΡ Π΅) const increasedByOne = numbers.map((num) => num + 1);
-
11.2 ΠΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΏΠΎΠΊΠ° Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΡ.
ΠΠΎΡΠ΅ΠΌΡ? ΠΠ½ΠΈ Π½Π΅ ΠΎΡΠ΅Π½Ρ Ρ ΠΎΡΠΎΡΠΎ ΡΡΠ°Π½ΡΠΏΠΈΠ»ΠΈΡΡΡΡΡΡ Π² ES5.
-
11.3 ΠΡΠ»ΠΈ Π²ΡΡ-ΡΠ°ΠΊΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΡ, ΠΈΠ»ΠΈ Π²Ρ Π½Π΅ ΠΎΠ±ΡΠ°ΡΠΈΠ»ΠΈ Π²Π½ΠΈΠΌΠ°Π½ΠΈΡ Π½Π° Π½Π°Ρ ΡΠΎΠ²Π΅Ρ, ΡΠ±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ
*
Ρ ΡΡΠ½ΠΊΡΠΈΠΈ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠ° ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π° Π΄ΠΎΠ»ΠΆΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ. eslint:generator-star-spacing
ΠΠΎΡΠ΅ΠΌΡ?
function
ΠΈ*
ΡΠ²Π»ΡΡΡΡΡ ΡΠ°ΡΡΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π°.*
Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠΌ Π΄Π»Ρfunction
,function*
ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠ΅ΠΉ, ΠΎΡΠ»ΠΈΡΠ½ΠΎΠΉ ΠΎΡfunction
.// ΠΏΠ»ΠΎΡ ΠΎ function * foo() { // ... } const bar = function * () { // ... }; const baz = function *() { // ... }; const quux = function*() { // ... }; function*foo() { // ... } function *foo() { // ... } // ΠΎΡΠ΅Π½Ρ ΠΏΠ»ΠΎΡ ΠΎ function * foo() { // ... } const wat = function * () { // ... }; // Ρ ΠΎΡΠΎΡΠΎ function* foo() { // ... } const foo = function* () { // ... };
-
12.1 ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠΎΡΠ΅ΡΠ½ΡΡ Π½ΠΎΡΠ°ΡΠΈΡ Π΄Π»Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌ. eslint:
dot-notation
const luke = { jedi: true, age: 28, }; // ΠΏΠ»ΠΎΡ ΠΎ const isJedi = luke['jedi']; // Ρ ΠΎΡΠΎΡΠΎ const isJedi = luke.jedi;
-
12.2 ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠΊΠΎΠ±ΠΎΡΠ½ΡΡ Π½ΠΎΡΠ°ΡΠΈΡ
[]
, ΠΊΠΎΠ³Π΄Π° Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π° Ρ ΡΠ°Π½ΠΈΡΡΡ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ.const luke = { jedi: true, age: 28, }; function getProp(prop) { return luke[prop]; } const isJedi = getProp('jedi');
-
12.3 ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ
**
Π΄Π»Ρ Π²ΠΎΠ·Π²Π΅Π΄Π΅Π½ΠΈΡ Π² ΡΡΠ΅ΠΏΠ΅Π½Ρ. eslint:no-restricted-properties
.// ΠΏΠ»ΠΎΡ ΠΎ const binary = Math.pow(2, 10); // Ρ ΠΎΡΠΎΡΠΎ const binary = 2 ** 10;
-
13.1 ΠΡΠ΅Π³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅
const
ΠΈΠ»ΠΈlet
Π΄Π»Ρ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ . ΠΠ΅Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΡΠΎΠ³ΠΎ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΈΠ²Π΅Π΄ΡΡ ΠΊ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ . ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠ·Π±Π΅Π³Π°ΡΡ Π·Π°Π³ΡΡΠ·Π½Π΅Π½ΠΈΡ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΈΠΌΡΠ½. eslint:no-undef
prefer-const
// ΠΏΠ»ΠΎΡ ΠΎ superPower = new SuperPower(); // Ρ ΠΎΡΠΎΡΠΎ const superPower = new SuperPower();
-
13.2 ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅
const
ΠΈΠ»ΠΈlet
Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈΠ»ΠΈ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ΠΈΡ. eslint:one-var
ΠΠΎΡΠ΅ΠΌΡ? Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΏΡΠΎΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π½ΠΎΠ²ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅. Π’Π°ΠΊΠΆΠ΅ Π²Ρ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π±ΡΠ΄Π΅ΡΠ΅ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΈΡΡΡΡ ΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΠΈ
;
ΠΈ,
ΠΈ ΠΎΠ± ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² ΠΏΡΠ½ΠΊΡΡΠ°ΡΠΈΠΈ. ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΠΉΡΠΈΡΡ ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΡΠ»Π°Π΄ΡΠΈΠΊΠ°, Π²ΠΌΠ΅ΡΡΠΎ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΡΡΠ³Π°ΡΡ ΡΠ΅ΡΠ΅Π· Π²ΡΠ΅ ΡΡΠ°Π·Ρ.// ΠΏΠ»ΠΎΡ ΠΎ const items = getItems(), goSportsTeam = true, dragonball = 'z'; // ΠΏΠ»ΠΎΡ ΠΎ // (ΡΡΠ°Π²Π½ΠΈΡΠ΅ Ρ ΠΊΠΎΠ΄ΠΎΠΌ Π²ΡΡΠ΅ ΠΈ ΠΏΠΎΠΏΡΡΠ°ΠΉΡΠ΅ΡΡ Π½Π°ΠΉΡΠΈ ΠΎΡΠΈΠ±ΠΊΡ) const items = getItems(), goSportsTeam = true; dragonball = 'z'; // Ρ ΠΎΡΠΎΡΠΎ const items = getItems(); const goSportsTeam = true; const dragonball = 'z';
-
13.3 Π ΠΏΠ΅ΡΠ²ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ Π³ΡΡΠΏΠΏΠΈΡΡΠΉΡΠ΅
const
, Π° Π·Π°ΡΠ΅ΠΌlet
.ΠΠΎΡΠ΅ΠΌΡ? ΠΡΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, ΠΊΠΎΠ³Π΄Π° Π² Π±ΡΠ΄ΡΡΠ΅ΠΌ Π²Π°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ ΡΠΎΠ·Π΄Π°ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ, Π·Π°Π²ΠΈΡΠΈΠΌΡΡ ΠΎΡ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΡ .
// ΠΏΠ»ΠΎΡ ΠΎ let i, len, dragonball, items = getItems(), goSportsTeam = true; // ΠΏΠ»ΠΎΡ ΠΎ let i; const items = getItems(); let dragonball; const goSportsTeam = true; let len; // Ρ ΠΎΡΠΎΡΠΎ const goSportsTeam = true; const items = getItems(); let dragonball; let i; let length;
-
13.4 Π‘ΠΎΠ·Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΠ°ΠΌ, Π³Π΄Π΅ ΠΎΠ½ΠΈ Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡ, Π½ΠΎ ΠΏΠΎΠΌΠ΅ΡΠ°ΠΉΡΠ΅ ΠΈΡ Π² ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠ΅Π΅ ΠΌΠ΅ΡΡΠΎ.
ΠΠΎΡΠ΅ΠΌΡ?
let
ΠΈconst
ΠΈΠΌΠ΅ΡΡ Π±Π»ΠΎΡΠ½ΡΡ ΠΎΠ±Π»Π°ΡΡΡ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ, Π° Π½Π΅ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ.// ΠΏΠ»ΠΎΡ ΠΎ - Π²ΡΠ·ΠΎΠ² Π½Π΅Π½ΡΠΆΠ½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ function checkName(hasName) { const name = getName(); if (hasName === 'test') { return false; } if (name === 'test') { this.setName(''); return false; } return name; } // Ρ ΠΎΡΠΎΡΠΎ function checkName(hasName) { if (hasName === 'test') { return false; } const name = getName(); if (name === 'test') { this.setName(''); return false; } return name; }
-
13.5 ΠΠ΅ ΡΠΎΠ·Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠ΅ΠΏΠΎΡΠΊΠΈ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ . eslint:
no-multi-assign
ΠΠΎΡΠ΅ΠΌΡ? Π’Π°ΠΊΠΈΠ΅ ΡΠ΅ΠΏΠΎΡΠΊΠΈ ΡΠΎΠ·Π΄Π°ΡΡ Π½Π΅ΡΠ²Π½ΡΠ΅ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅.
// ΠΏΠ»ΠΎΡ ΠΎ (function example() { // JavaScript ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΡΠ΅Ρ ΡΡΠΎ, ΠΊΠ°ΠΊ // let a = ( b = ( c = 1 ) ); // ΠΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ let ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΊ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ a; // ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ b ΠΈ c ΡΡΠ°Π½ΡΡ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠΌΠΈ. let a = b = c = 1; }()); console.log(a); // throws ReferenceError console.log(b); // 1 console.log(c); // 1 // Ρ ΠΎΡΠΎΡΠΎ (function example() { let a = 1; let b = a; let c = a; }()); console.log(a); // throws ReferenceError console.log(b); // throws ReferenceError console.log(c); // throws ReferenceError // ΡΠΎΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ ΠΈ Π΄Π»Ρ `const`
-
13.6 ΠΠ·Π±Π΅Π³Π°ΠΉΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ½Π°ΡΠ½ΡΡ ΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΈ Π΄Π΅ΠΊΡΠ΅ΠΌΠ΅Π½ΡΠΎΠ² (
++
,--
). eslintno-plusplus
ΠΠΎΡΠ΅ΠΌΡ? Π‘ΠΎΠ³Π»Π°ΡΠ½ΠΎ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ eslint, ΡΠ½Π°ΡΠ½ΡΠ΅ ΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½Ρ ΠΈ Π΄Π΅ΠΊΡΠ΅ΠΌΠ΅Π½Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π²ΡΡΠ°Π²Π»ΡΡΡ ΡΠΎΡΠΊΡ Ρ Π·Π°ΠΏΡΡΠΎΠΉ, ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΡΡΠ°ΡΡ ΠΏΡΠΈΡΠΈΠ½ΠΎΠΉ ΡΡΡΠ΄Π½ΠΎΡΠ»ΠΎΠ²ΠΈΠΌΡΡ ΠΎΡΠΈΠ±ΠΎΠΊ ΠΏΡΠΈ ΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΈ Π΄Π΅ΠΊΡΠ΅ΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ. Π’Π°ΠΊΠΆΠ΅ Π½Π°Π³Π»ΡΠ΄Π½Π΅Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ Π²Π°ΡΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ
num += 1
Π²ΠΌΠ΅ΡΡΠΎnum++
ΠΈΠ»ΠΈnum ++
. ΠΠ°ΠΏΡΠ΅Ρ Π½Π° ΡΠ½Π°ΡΠ½ΡΠ΅ ΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½Ρ ΠΈ Π΄Π΅ΠΊΡΠ΅ΠΌΠ΅Π½Ρ ΠΎΠ³ΡΠ°ΠΆΠ΄Π°Π΅Ρ Π²Π°Ρ ΠΎΡ Π½Π΅ΠΏΡΠ΅Π΄Π½Π°ΠΌΠ΅ΡΠ΅Π½Π½ΡΡ ΠΏΡΠ΅ΠΆΠ΄Π΅Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ/Π΄Π΅ΠΊΡΠ΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ Π½Π΅ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·ΡΠ΅ΠΌΠΎΠΌΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ Π²Π°ΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.// ΠΏΠ»ΠΎΡ ΠΎ const array = [1, 2, 3]; let num = 1; num++; --num; let sum = 0; let truthyCount = 0; for (let i = 0; i < array.length; i++) { let value = array[i]; sum += value; if (value) { truthyCount++; } } // Ρ ΠΎΡΠΎΡΠΎ const array = [1, 2, 3]; let num = 1; num += 1; num -= 1; const sum = array.reduce((a, b) => a + b, 0); const truthyCount = array.filter(Boolean).length;
-
13.7 Π ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ΠΈΠΈ ΠΈΠ·Π±Π΅Π³Π°ΠΉΡΠ΅ ΡΠ°Π·ΡΡΠ²ΠΎΠ² ΡΡΡΠΎΠΊ Π΄ΠΎ ΠΈ ΠΏΠΎΡΠ»Π΅
=
. ΠΡΠ»ΠΈ Π²Π°ΡΠ΅ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ΠΈΠ΅ Π½Π°ΡΡΡΠ°Π΅Ρ ΠΏΡΠ°Π²ΠΈΠ»ΠΎmax-len
, ΠΎΠ±Π΅ΡΠ½ΠΈΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π² ΠΊΡΡΠ³Π»ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ. eslintoperator-linebreak
.ΠΠΎΡΠ΅ΠΌΡ? Π Π°Π·ΡΡΠ²Ρ ΡΡΡΠΎΠΊ Π΄ΠΎ ΠΈ ΠΏΠΎΡΠ»Π΅
=
ΠΌΠΎΠ³ΡΡ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡ ΠΊ ΠΏΡΡΠ°Π½ΠΈΡΠ΅ Π² ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ.// ΠΏΠ»ΠΎΡ ΠΎ const foo = superLongLongLongLongLongLongLongLongFunctionName(); // ΠΏΠ»ΠΎΡ ΠΎ const foo = 'superLongLongLongLongLongLongLongLongString'; // Ρ ΠΎΡΠΎΡΠΎ const foo = ( superLongLongLongLongLongLongLongLongFunctionName() ); // Ρ ΠΎΡΠΎΡΠΎ const foo = 'superLongLongLongLongLongLongLongLongString';
-
13.8 ΠΠ°ΠΏΡΠ΅ΡΠΈΡΡ Π½Π΅ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅. eslint:
no-unused-vars
ΠΠΎΡΠ΅ΠΌΡ? ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ±ΡΡΠ²Π»Π΅Π½Ρ ΠΈ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π² ΠΊΠΎΠ΄Π΅, ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ, ΡΠ²Π»ΡΡΡΡΡ ΠΎΡΠΈΠ±ΠΊΠΎΠΉ ΠΈΠ·-Π·Π° Π½Π΅Π·Π°Π²Π΅ΡΡΡΠ½Π½ΠΎΠ³ΠΎ ΡΠ΅ΡΠ°ΠΊΡΠΎΡΠΈΠ½Π³Π°. Π’Π°ΠΊΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π·Π°Π½ΠΈΠΌΠ°ΡΡ ΠΌΠ΅ΡΡΠΎ Π² ΠΊΠΎΠ΄Π΅ ΠΈ ΠΌΠΎΠ³ΡΡ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΠΏΡΡΠ°Π½ΠΈΡΠ΅ ΠΏΡΠΈ ΡΡΠ΅Π½ΠΈΠΈ.
// ΠΏΠ»ΠΎΡ ΠΎ var some_unused_var = 42; // ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ Π·Π°ΠΏΠΈΡΠΈ, Π½Π΅ ΡΡΠΈΡΠ°ΡΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΌΠΈ. var y = 10; y = 5; // Π§ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ. var z = 0; z = z + 1; // ΠΠ΅ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ. function getX(x, y) { return x; } // Ρ ΠΎΡΠΎΡΠΎ function getXPlusY(x, y) { return x + y; } var x = 1; var y = a + 2; alert(getXPlusY(x, y)); // ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ 'type' ΠΈΠ³Π½ΠΎΡΠΈΡΡΠ΅ΡΡΡ, Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΠΎΠ½Π° Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΡΠ΅ΡΡΡ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΡΠ΄ΠΎΠΌ Π΅ΡΡΡ rest-ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ. // ΠΡΠ° ΡΠΎΡΠΌΠ° ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΎΠΏΡΡΠΊΠ°Π΅Ρ ΡΠΊΠ°Π·Π°Π½Π½ΡΠ΅ ΠΊΠ»ΡΡΠΈ. var { type, ...coords } = data; // 'coords' ΡΠ΅ΠΏΠ΅ΡΡ 'data' ΠΎΠ±ΡΠ΅ΠΊΡ Π±Π΅Π· ΡΠ²ΠΎΠΉΡΡΠ²Π° 'type'.
-
14.1 ΠΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ
var
ΠΏΠΎΠ΄Π½ΠΈΠΌΠ°ΡΡΡΡ Π² Π½Π°ΡΠ°Π»ΠΎ ΠΎΠ±Π»Π°ΡΡΠΈ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ Π±Π»ΠΈΠΆΠ°ΠΉΡΠ΅ΠΉ Π·Π°ΠΊΡΡΠ²Π°ΡΡΠ΅ΠΉ ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ, Π° ΠΈΡ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ΠΈΠ΅ Π½Π΅Ρ. ΠΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡconst
ΠΈlet
ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΏΠΎ Π½ΠΎΠ²ΠΎΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΈ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΠΎΠΉ ΠΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΡΡΡΠ²ΡΠ΅ ΠΠΎΠ½Ρ (Temporal Dead Zone). ΠΠ°ΠΆΠ½ΠΎ Π·Π½Π°ΡΡ, ΠΏΠΎΡΠ΅ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ typeof Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎ.// ΠΌΡ Π·Π½Π°Π΅ΠΌ, ΡΡΠΎ ΡΡΠΎ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ // (Π΅ΡΠ»ΠΈ Π½Π΅Ρ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ notDefined) function example() { console.log(notDefined); // => Π²ΡΠ±ΡΠΎΡΠΈΡ ΠΎΡΠΈΠ±ΠΊΡ ReferenceError } // ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΊ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π΄ΠΎ Π΅Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ // Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΈΠ·-Π·Π° ΠΏΠΎΠ΄ΡΡΠΌΠ°. // ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ true Π½Π΅ ΠΏΠΎΠ΄Π½ΠΈΠΌΠ°Π΅ΡΡΡ. function example() { console.log(declaredButNotAssigned); // => undefined var declaredButNotAssigned = true; } // ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ // ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² Π½Π°ΡΠ°Π»ΠΎ ΠΎΠ±Π»Π°ΡΡΠΈ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ. // ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π½Π°Ρ ΠΏΡΠΈΠΌΠ΅Ρ // ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠ°ΡΡ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ: function example() { let declaredButNotAssigned; console.log(declaredButNotAssigned); // => undefined declaredButNotAssigned = true; } // ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ const ΠΈ let function example() { console.log(declaredButNotAssigned); // => Π²ΡΠ±ΡΠΎΡΠΈΡ ΠΎΡΠΈΠ±ΠΊΡ ReferenceError console.log(typeof declaredButNotAssigned); // => Π²ΡΠ±ΡΠΎΡΠΈΡ ΠΎΡΠΈΠ±ΠΊΡ ReferenceError const declaredButNotAssigned = true; }
-
14.2 ΠΠ»Ρ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Π½Π°Π²Π΅ΡΡ ΠΎΠ±Π»Π°ΡΡΠΈ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΏΠΎΠ΄Π½ΠΈΠΌΠ°Π΅ΡΡΡ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π½ΠΎ Π½Π΅ Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅.
function example() { console.log(anonymous); // => undefined anonymous(); // => TypeError anonymous Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ var anonymous = function () { console.log('anonymous function expression'); }; }
-
14.3 ΠΠ»Ρ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Π½Π°Π²Π΅ΡΡ ΠΎΠ±Π»Π°ΡΡΠΈ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΏΠΎΠ΄Π½ΠΈΠΌΠ°Π΅ΡΡΡ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π½ΠΎ Π½Π΅ ΠΈΠΌΡ ΠΈΠ»ΠΈ ΡΠ΅Π»ΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ.
function example() { console.log(named); // => undefined named(); // => TypeError named Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ superPower(); // => ReferenceError superPower Π½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π° var named = function superPower() { console.log('Flying'); }; } // ΡΠΎΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ ΡΠΏΡΠ°Π²Π΅Π΄Π»ΠΈΠ²ΠΎ, ΠΊΠΎΠ³Π΄Π° ΠΈΠΌΡ ΡΡΠ½ΠΊΡΠΈΠΈ // ΡΠΎΠ²ΠΏΠ°Π΄Π°Π΅Ρ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ. function example() { console.log(named); // => undefined named(); // => TypeError named Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ var named = function named() { console.log('named'); }; }
-
14.4 ΠΡΠΈ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π΅Ρ ΠΈΠΌΡ ΠΈ ΡΠ΅Π»ΠΎ ΠΏΠΎΠ΄Π½ΠΈΠΌΠ°ΡΡΡΡ Π½Π°Π²Π΅ΡΡ ΠΎΠ±Π»Π°ΡΡΠΈ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ.
function example() { superPower(); // => Flying function superPower() { console.log('Flying'); } }
-
ΠΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ Π² ΡΡΠ°ΡΡΠ΅ JavaScript Scoping & Hoisting ΠΎΡ Ben Cherry.
-
15.2 Π£ΡΠ»ΠΎΠ²Π½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ
if
, Π²ΡΡΠΈΡΠ»ΡΡΡΡΡ ΠΏΡΡΡΠΌ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΊ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠΌΡ ΡΠΈΠΏΡBoolean
ΡΠ΅ΡΠ΅Π· Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ToBoolean
ΠΈ Π²ΡΠ΅Π³Π΄Π° ΡΠ»Π΅Π΄ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΏΡΠ°Π²ΠΈΠ»Π°ΠΌ:- Object ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ true
- Undefined ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ false
- Null ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ false
- Boolean ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π±ΡΠ»Π΅Π²Π° ΡΠΈΠΏΠ°
- Number ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ false, Π΅ΡΠ»ΠΈ +0, -0, or NaN, Π² ΠΎΡΡΠ°Π»ΡΠ½ΡΡ ΡΠ»ΡΡΠ°ΡΡ true
- String ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ false, Π΅ΡΠ»ΠΈ ΡΡΡΠΎΠΊΠ° ΠΏΡΡΡΠ°Ρ
''
, Π² ΠΎΡΡΠ°Π»ΡΠ½ΡΡ ΡΠ»ΡΡΠ°ΡΡ true
if ([0] && []) { // true // ΠΠ°ΡΡΠΈΠ² (Π΄Π°ΠΆΠ΅ ΠΏΡΡΡΠΎΠΉ) ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ, Π° ΠΎΠ±ΡΠ΅ΠΊΡΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ true }
-
15.3 ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠΎΠΊΡΠ°ΡΠ΅Π½ΠΈΡ Π΄Π»Ρ Π±ΡΠ»Π΅Π²ΡΠΊΠΈΡ ΡΠΈΠΏΠΎΠ², Π° Π΄Π»Ρ ΡΡΡΠΎΠΊ ΠΈ ΡΠΈΡΠ΅Π» ΠΏΡΠΈΠΌΠ΅Π½ΡΠΉΡΠ΅ ΡΠ²Π½ΠΎΠ΅ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅.
// ΠΏΠ»ΠΎΡ ΠΎ if (isValid === true) { // ... } // Ρ ΠΎΡΠΎΡΠΎ if (isValid) { // ... } // ΠΏΠ»ΠΎΡ ΠΎ if (name) { // ... } // Ρ ΠΎΡΠΎΡΠΎ if (name !== '') { // ... } // ΠΏΠ»ΠΎΡ ΠΎ if (collection.length) { // ... } // Ρ ΠΎΡΠΎΡΠΎ if (collection.length > 0) { // ... }
- 15.4 ΠΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ·Π½Π°ΡΡ Π² ΡΡΠ°ΡΡΠ΅ Truth Equality and JavaScript ΠΎΡ Angus Croll.
-
15.5 ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠΈΠ³ΡΡΠ½ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ Π΄Π»Ρ
case
ΠΈdefault
, Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ Π»Π΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π΄Π΅ΠΊΠ»Π°ΡΠ°ΡΠΈΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ,let
,const
,function
, ΠΈclass
). eslint:no-case-declarations
.ΠΠΎΡΠ΅ΠΌΡ? ΠΠ΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π΄Π΅ΠΊΠ»Π°ΡΠ°ΡΠΈΠΈ Π²ΠΈΠ΄Π½Ρ Π²ΠΎ Π²ΡΠ΅ΠΌ
switch
Π±Π»ΠΎΠΊΠ΅, Π½ΠΎ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠΈ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΏΡΠΈ Π²Ρ ΠΎΠ΄Π΅ Π² Π±Π»ΠΎΠΊcase
. ΠΠΎΠ·Π½ΠΈΠΊΠ°ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΠΊΠΎΠ³Π΄Π° ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎcase
ΠΏΡΡΠ°ΡΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΎΠ΄Π½ΠΎ ΠΈ ΡΠΎ ΠΆΠ΅.// ΠΏΠ»ΠΎΡ ΠΎ switch (foo) { case 1: let x = 1; break; case 2: const y = 2; break; case 3: function f() { // ... } break; default: class C {} } // Ρ ΠΎΡΠΎΡΠΎ switch (foo) { case 1: { let x = 1; break; } case 2: { const y = 2; break; } case 3: { function f() { // ... } break; } case 4: bar(); break; default: { class C {} } }
-
15.6 Π’Π΅ΡΠ½Π°ΡΠ½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π²Π»ΠΎΠΆΠ΅Π½Ρ ΠΈ Π² Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΡΠ»ΡΡΠ°Π΅Π² Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Ρ Π½Π° ΠΎΠ΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅. eslint:
no-nested-ternary
.// ΠΏΠ»ΠΎΡ ΠΎ const foo = maybe1 > maybe2 ? "bar" : value1 > value2 ? "baz" : null; // ΡΠ°Π·Π±ΠΈΡ Π½Π° Π΄Π²Π° ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΡΠ΅ΡΠ½Π°ΡΠ½ΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ const maybeNull = value1 > value2 ? 'baz' : null; const foo = maybe1 > maybe2 ? 'bar' : maybeNull; // ΠΎΡΠ»ΠΈΡΠ½ΠΎ const foo = maybe1 > maybe2 ? 'bar' : maybeNull;
-
15.7 ΠΠ·Π±Π΅Π³Π°ΠΉΡΠ΅ Π½Π΅Π½ΡΠΆΠ½ΡΡ ΡΠ΅ΡΠ½Π°ΡΠ½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ². eslint:
no-unneeded-ternary
.// ΠΏΠ»ΠΎΡ ΠΎ const foo = a ? a : b; const bar = c ? true : false; const baz = c ? false : true; // Ρ ΠΎΡΠΎΡΠΎ const foo = a || b; const bar = !!c; const baz = !c;
-
15.8 ΠΡΠΈ ΡΠΌΠ΅ΡΠΈΠ²Π°Π½ΠΈΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ², ΠΏΠΎΠΌΠ΅ΡΠ°ΠΉΡΠ΅ ΠΈΡ Π² ΠΊΡΡΠ³Π»ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ. ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΌ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠ²Π»ΡΡΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ:
+
,-
ΠΈ**
, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΈΡ ΠΏΡΠΈΠΎΡΠΈΡΠ΅Ρ ΡΠΈΡΠΎΠΊΠΎ ΠΈΠ·Π²Π΅ΡΡΠ΅Π½. ΠΡ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌ Π·Π°ΠΊΠ»ΡΡΠΈΡΡ/
ΠΈ*
Π² ΠΊΡΡΠ³Π»ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΈΡ ΠΏΡΠΈΠΎΡΠΈΡΠ΅Ρ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π΅ΠΎΠ΄Π½ΠΎΠ·Π½Π°ΡΠ½ΡΠΌ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ ΡΠΌΠ΅ΡΠΈΠ²Π°ΡΡΡΡ. eslint:no-mixed-operators
ΠΠΎΡΠ΅ΠΌΡ? ΠΡΠΎ ΡΠ»ΡΡΡΠ°Π΅Ρ ΡΠΈΡΠ°Π΅ΠΌΠΎΡΡΡ ΠΈ ΡΡΠΎΡΠ½ΡΠ΅Ρ Π½Π°ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°.
// ΠΏΠ»ΠΎΡ ΠΎ const foo = a && b < 0 || c > 0 || d + 1 === 0; // ΠΏΠ»ΠΎΡ ΠΎ const bar = a ** b - 5 % d; // ΠΏΠ»ΠΎΡ ΠΎ // ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠΈΠ±ΠΈΡΡΡΡ, Π΄ΡΠΌΠ°Ρ ΡΡΠΎ ΡΡΠΎ (a || b) && c if (a || b && c) { return d; } // ΠΏΠ»ΠΎΡ ΠΎ const bar = a + b / c * d; // Ρ ΠΎΡΠΎΡΠΎ const foo = (a && b < 0) || c > 0 || (d + 1 === 0); // Ρ ΠΎΡΠΎΡΠΎ const bar = a ** b - (5 % d); // Ρ ΠΎΡΠΎΡΠΎ if (a || (b && c)) { return d; } // Ρ ΠΎΡΠΎΡΠΎ const bar = a + (b / c) * d;
-
16.1 ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠΈΠ³ΡΡΠ½ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ, ΠΊΠΎΠ³Π΄Π° Π±Π»ΠΎΠΊ ΠΊΠΎΠ΄Π° Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΡΠΎΠΊ. eslint:
nonblock-statement-body-position
// ΠΏΠ»ΠΎΡ ΠΎ if (test) return false; // Ρ ΠΎΡΠΎΡΠΎ if (test) return false; // Ρ ΠΎΡΠΎΡΠΎ if (test) { return false; } // ΠΏΠ»ΠΎΡ ΠΎ function foo() { return false; } // Ρ ΠΎΡΠΎΡΠΎ function bar() { return false; }
-
16.2 ΠΡΠ»ΠΈ Π±Π»ΠΎΠΊΠΈ ΠΊΠΎΠ΄Π° Π² ΡΡΠ»ΠΎΠ²ΠΈΠΈ
if
ΠΈelse
Π·Π°Π½ΠΈΠΌΠ°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΡΠΎΠΊ, ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡelse
Π½Π° ΡΠΎΠΉ ΠΆΠ΅ ΡΡΡΠΎΡΠΊΠ΅, Π³Π΄Π΅ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π·Π°ΠΊΡΡΠ²Π°ΡΡΠ°Ρ ΡΠΈΠ³ΡΡΠ½Π°Ρ ΡΠΊΠΎΠ±ΠΊΠ° Π±Π»ΠΎΠΊΠ°if
. eslint:brace-style
// ΠΏΠ»ΠΎΡ ΠΎ if (test) { thing1(); thing2(); } else { thing3(); } // Ρ ΠΎΡΠΎΡΠΎ if (test) { thing1(); thing2(); } else { thing3(); }
-
16.3 ΠΡΠ»ΠΈ Π² Π±Π»ΠΎΠΊΠ΅
if
Π²ΡΠ΅Π³Π΄Π° Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡreturn
, ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π±Π»ΠΎΠΊelse
Π½Π΅ Π½ΡΠΆΠ΅Π½.return
Π²Π½ΡΡΡΠΈ Π±Π»ΠΎΠΊΠ°else if
, ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ Π·Π° Π±Π»ΠΎΠΊΠΎΠΌif
, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡreturn
, ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ°Π·Π΄Π΅Π»ΡΠ½ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π±Π»ΠΎΠΊΠΎΠ²if
. eslint:no-else-return
// ΠΏΠ»ΠΎΡ ΠΎ function foo() { if (x) { return x; } else { return y; } } // ΠΏΠ»ΠΎΡ ΠΎ function cats() { if (x) { return x; } else if (y) { return y; } } // ΠΏΠ»ΠΎΡ ΠΎ function dogs() { if (x) { return x; } else { if (y) { return y; } } } // Ρ ΠΎΡΠΎΡΠΎ function foo() { if (x) { return x; } return y; } // Ρ ΠΎΡΠΎΡΠΎ function cats() { if (x) { return x; } if (y) { return y; } } // Ρ ΠΎΡΠΎΡΠΎ function dogs(x) { if (x) { if (z) { return y; } } else { return z; } }
-
17.1 ΠΡΠ»ΠΈ Π²Π°Ρ ΡΠΏΡΠ°Π²Π»ΡΡΡΠΈΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ (
if
,while
ΠΈ Ρ.Π΄.) ΡΠ»ΠΈΡΠΊΠΎΠΌ Π΄Π»ΠΈΠ½Π½ΡΠΉ ΠΈΠ»ΠΈ ΠΏΡΠ΅Π²ΡΡΠ°Π΅Ρ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΡ Π΄Π»ΠΈΠ½Ρ ΡΡΡΠΎΠΊΠΈ, ΡΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ (ΡΠ³ΡΡΠΏΠΏΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅) ΡΡΠ»ΠΎΠ²ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΡ Π½Π° Π½ΠΎΠ²ΡΡ ΡΡΡΠΎΠΊΡ. ΠΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠ°ΡΠΏΠΎΠ»Π°Π³Π°ΡΡΡΡ Π² Π½Π°ΡΠ°Π»Π΅ ΡΡΡΠΎΠΊΠΈ.ΠΠΎΡΠ΅ΠΌΡ? ΠΠ°Π»ΠΈΡΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² Π² Π½Π°ΡΠ°Π»Π΅ ΡΡΡΠΎΠΊΠΈ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ Π²ΡΡΠ°Π²Π½ΠΈΠ²Π°Π½ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² ΠΈ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ ΡΠ΅ΠΏΠΎΡΠΊΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ². ΠΡΠΎ ΡΠ°ΠΊΠΆΠ΅ ΡΠ»ΡΡΡΠ°Π΅Ρ ΡΠΈΡΠ°Π΅ΠΌΠΎΡΡΡ, ΡΠΏΡΠΎΡΠ°Ρ Π²ΠΈΠ·ΡΠ°Π»ΡΠ½ΠΎΠ΅ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ ΡΠ»ΠΎΠΆΠ½ΠΎΠΉ Π»ΠΎΠ³ΠΈΠΊΠΈ.
// ΠΏΠ»ΠΎΡ ΠΎ if ((foo === 123 || bar === 'abc') && doesItLookGoodWhenItBecomesThatLong() && isThisReallyHappening()) { thing1(); } // ΠΏΠ»ΠΎΡ ΠΎ if (foo === 123 && bar === 'abc') { thing1(); } // ΠΏΠ»ΠΎΡ ΠΎ if (foo === 123 && bar === 'abc') { thing1(); } // ΠΏΠ»ΠΎΡ ΠΎ if ( foo === 123 && bar === 'abc' ) { thing1(); } // Ρ ΠΎΡΠΎΡΠΎ if ( foo === 123 && bar === 'abc' ) { thing1(); } // Ρ ΠΎΡΠΎΡΠΎ if ( (foo === 123 || bar === 'abc') && doesItLookGoodWhenItBecomesThatLong() && isThisReallyHappening() ) { thing1(); } // Ρ ΠΎΡΠΎΡΠΎ if (foo === 123 && bar === 'abc') { thing1(); }
-
17.2 ΠΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ Π²ΡΠ±ΠΎΡΠ° Π²ΠΌΠ΅ΡΡΠΎ ΡΠΏΡΠ°Π²Π»ΡΡΡΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ².
// ΠΏΠ»ΠΎΡ ΠΎ !isRunning && startRunning(); // Ρ ΠΎΡΠΎΡΠΎ if (!isRunning) { startRunning(); }
-
18.1 ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ
/** ... */
Π΄Π»Ρ ΠΌΠ½ΠΎΠ³ΠΎΡΡΡΠΎΡΠ½ΡΡ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π².// ΠΏΠ»ΠΎΡ ΠΎ // make() Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π½ΠΎΠ²ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ // ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΠΎΠΌΡ Π½Π°Π·Π²Π°Π½ΠΈΡ ΡΠ΅Π³Π° // // @param {String} tag // @return {Element} element function make(tag) { // ... return element; } // Ρ ΠΎΡΠΎΡΠΎ /** * make() Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π½ΠΎΠ²ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ * ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΠΎΠΌΡ Π½Π°Π·Π²Π°Π½ΠΈΡ ΡΠ΅Π³Π° */ function make(tag) { // ... return element; }
-
18.2 ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ ΡΠ»Π΅Ρ
//
Π΄Π»Ρ ΠΎΠ΄Π½ΠΎΡΡΡΠΎΡΠ½ΡΡ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π². Π Π°ΡΠΏΠΎΠ»Π°Π³Π°ΠΉΡΠ΅ ΡΠ°ΠΊΠΈΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΉ ΡΡΡΠΎΠΊΠΎΠΉ Π½Π°Π΄ ΠΊΠΎΠ΄ΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ Ρ ΠΎΡΠΈΡΠ΅ ΠΏΠΎΡΡΠ½ΠΈΡΡ. ΠΡΠ»ΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ²ΠΎΠΉ ΡΡΡΠΎΠΊΠΎΠΉ Π±Π»ΠΎΠΊΠ°, Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΡΠ²Π΅ΡΡ Ρ ΠΏΡΡΡΡΡ ΡΡΡΠΎΠΊΡ.// ΠΏΠ»ΠΎΡ ΠΎ const active = true; // ΡΡΠΎ ΡΠ΅ΠΊΡΡΠ°Ρ Π²ΠΊΠ»Π°Π΄ΠΊΠ° // Ρ ΠΎΡΠΎΡΠΎ // ΡΡΠΎ ΡΠ΅ΠΊΡΡΠ°Ρ Π²ΠΊΠ»Π°Π΄ΠΊΠ° const active = true; // ΠΏΠ»ΠΎΡ ΠΎ function getType() { console.log('fetching type...'); // ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΠΈΠΏ 'no type' const type = this.type || 'no type'; return type; } // Ρ ΠΎΡΠΎΡΠΎ function getType() { console.log('fetching type...'); // ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΠΈΠΏ 'no type' const type = this.type || 'no type'; return type; } // ΡΠΎΠΆΠ΅ Ρ ΠΎΡΠΎΡΠΎ function getType() { // ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΠΈΠΏ 'no type' const type = this.type || 'no type'; return type; }
-
18.3 ΠΠ°ΡΠΈΠ½Π°ΠΉΡΠ΅ Π²ΡΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Ρ ΠΏΡΠΎΠ±Π΅Π»Π°, ΡΠ°ΠΊ ΠΈΡ ΠΏΡΠΎΡΠ΅ ΡΠΈΡΠ°ΡΡ. eslint:
spaced-comment
// ΠΏΠ»ΠΎΡ ΠΎ //ΡΡΠΎ ΡΠ΅ΠΊΡΡΠ°Ρ Π²ΠΊΠ»Π°Π΄ΠΊΠ° const active = true; // Ρ ΠΎΡΠΎΡΠΎ // ΡΡΠΎ ΡΠ΅ΠΊΡΡΠ°Ρ Π²ΠΊΠ»Π°Π΄ΠΊΠ° const active = true; // ΠΏΠ»ΠΎΡ ΠΎ /** *make() Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π½ΠΎΠ²ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ *ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΠΎΠΌΡ Π½Π°Π·Π²Π°Π½ΠΈΡ ΡΠ΅Π³Π° */ function make(tag) { // ... return element; } // Ρ ΠΎΡΠΎΡΠΎ /** * make() Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π½ΠΎΠ²ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ * ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΠΎΠΌΡ Π½Π°Π·Π²Π°Π½ΠΈΡ ΡΠ΅Π³Π° */ function make(tag) { // ... return element; }
- 18.4 ΠΡΠ»ΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ ΡΠΎ ΡΠ»ΠΎΠ²
FIXME
ΠΈΠ»ΠΈTODO
, ΡΠΎ ΡΡΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ Π΄ΡΡΠ³ΠΈΠΌ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ Π±ΡΡΡΡΠΎ ΠΏΠΎΠ½ΡΡΡ, ΠΊΠΎΠ³Π΄Π° Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΡΠΊΠ°Π·Π°ΡΡ Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΠΊΠΎΡΠΎΡΡΡ Π½Π°Π΄ΠΎ ΡΠ΅ΡΠΈΡΡ, ΠΈΠ»ΠΈ ΠΊΠΎΠ³Π΄Π° Π²Ρ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅ΡΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π½Π°Π΄ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ. Π’Π°ΠΊΠΈΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ, Π² ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΠΎΠ±ΡΡΠ½ΡΡ , ΠΏΠΎΠ±ΡΠΆΠ΄Π°ΡΡ ΠΊ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ:FIXME: -- Π½ΡΠΆΠ½ΠΎ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ Ρ ΡΡΠΈΠΌ
ΠΈΠ»ΠΈTODO: -- Π½ΡΠΆΠ½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ
.
-
18.5 ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅
// FIXME:
, ΡΡΠΎΠ±Ρ ΠΎΠΏΠΈΡΠ°ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ.class Calculator extends Abacus { constructor() { super(); // FIXME: Π·Π΄Π΅ΡΡ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π³Π»ΠΎΠ±Π°Π»ΡΠ½Π°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ total = 0; } }
-
18.6 ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅
// TODO:
, ΡΡΠΎΠ±Ρ ΠΎΠΏΠΈΡΠ°ΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ.class Calculator extends Abacus { constructor() { super(); // TODO: Π½ΡΠΆΠ½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π·Π°Π΄Π°ΡΡ total ΡΠ΅ΡΠ΅Π· ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ this.total = 0; } }
-
19.1 ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΌΡΠ³ΠΊΡΡ ΡΠ°Π±ΡΠ»ΡΡΠΈΡ (ΡΠΈΠΌΠ²ΠΎΠ» ΠΏΡΠΎΠ±Π΅Π»Π°) ΡΠΈΡΠΈΠ½ΠΎΠΉ Π² 2 ΠΏΡΠΎΠ±Π΅Π»Π°. eslint:
indent
// ΠΏΠ»ΠΎΡ ΠΎ function foo() { ββββlet name; } // ΠΏΠ»ΠΎΡ ΠΎ function bar() { βlet name; } // Ρ ΠΎΡΠΎΡΠΎ function baz() { ββlet name; }
-
19.2 Π‘ΡΠ°Π²ΡΡΠ΅ 1 ΠΏΡΠΎΠ±Π΅Π» ΠΏΠ΅ΡΠ΅Π΄ ΠΎΡΠΊΡΡΠ²Π°ΡΡΠ΅ΠΉ ΡΠΈΠ³ΡΡΠ½ΠΎΠΉ ΡΠΊΠΎΠ±ΠΊΠΎΠΉ Ρ Π±Π»ΠΎΠΊΠ°. eslint:
space-before-blocks
// ΠΏΠ»ΠΎΡ ΠΎ function test(){ console.log('test'); } // Ρ ΠΎΡΠΎΡΠΎ function test() { console.log('test'); } // ΠΏΠ»ΠΎΡ ΠΎ dog.set('attr',{ age: '1 year', breed: 'Bernese Mountain Dog', }); // Ρ ΠΎΡΠΎΡΠΎ dog.set('attr', { age: '1 year', breed: 'Bernese Mountain Dog', });
-
19.3 Π‘ΡΠ°Π²ΡΡΠ΅ 1 ΠΏΡΠΎΠ±Π΅Π» ΠΏΠ΅ΡΠ΅Π΄ ΠΎΡΠΊΡΡΠ²Π°ΡΡΠ΅ΠΉ ΠΊΡΡΠ³Π»ΠΎΠΉ ΡΠΊΠΎΠ±ΠΊΠΎΠΉ Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ°Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ (
if
,while
ΠΈ Ρ.ΠΏ.). ΠΠ΅ ΠΎΡΡΠ°Π²Π»ΡΠΉΡΠ΅ ΠΏΡΠΎΠ±Π΅Π»ΠΎΠ² ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΏΠΈΡΠΊΠΎΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΈ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Π² ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡΡ ΠΈ Π²ΡΠ·ΠΎΠ²Π°Ρ ΡΡΠ½ΠΊΡΠΈΠΉ. eslint:keyword-spacing
// ΠΏΠ»ΠΎΡ ΠΎ if(isJedi) { fight (); } // Ρ ΠΎΡΠΎΡΠΎ if (isJedi) { fight(); } // ΠΏΠ»ΠΎΡ ΠΎ function fight () { console.log ('Swooosh!'); } // Ρ ΠΎΡΠΎΡΠΎ function fight() { console.log('Swooosh!'); }
-
19.4 Π Π°Π·Π΄Π΅Π»ΡΠΉΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ ΠΏΡΠΎΠ±Π΅Π»Π°ΠΌΠΈ. eslint:
space-infix-ops
// ΠΏΠ»ΠΎΡ ΠΎ const x=y+5; // Ρ ΠΎΡΠΎΡΠΎ const x = y + 5;
-
19.5 Π ΠΊΠΎΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Π° ΠΎΡΡΠ°Π²Π»ΡΠΉΡΠ΅ ΠΎΠ΄Π½Ρ ΠΏΡΡΡΡΡ ΡΡΡΠΎΠΊΡ. eslint:
eol-last
// ΠΏΠ»ΠΎΡ ΠΎ import { es6 } from './AirbnbStyleGuide'; // ... export default es6;
// ΠΏΠ»ΠΎΡ ΠΎ import { es6 } from './AirbnbStyleGuide'; // ... export default es6;β΅ β΅
// Ρ ΠΎΡΠΎΡΠΎ import { es6 } from './AirbnbStyleGuide'; // ... export default es6;β΅
-
19.6 ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΡ ΡΡΡΠΎΠΊ ΠΈ ΠΎΡΡΡΡΠΏΡ, ΠΊΠΎΠ³Π΄Π° Π΄Π΅Π»Π°Π΅ΡΠ΅ Π΄Π»ΠΈΠ½Π½ΡΠ΅ ΡΠ΅ΠΏΠΎΡΠΊΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² (Π±ΠΎΠ»ΡΡΠ΅ 2 ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ²). Π‘ΡΠ°Π²ΡΡΠ΅ ΡΠΎΡΠΊΡ Π² Π½Π°ΡΠ°Π»Π΅ ΡΡΡΠΎΠΊΠΈ, ΡΡΠΎΠ±Ρ Π΄Π°ΡΡ ΠΏΠΎΠ½ΡΡΡ, ΡΡΠΎ ΡΡΠΎ Π½Π΅ Π½ΠΎΠ²Π°Ρ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ, Π° ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ ΡΠ΅ΠΏΠΎΡΠΊΠΈ. eslint:
newline-per-chained-call
no-whitespace-before-property
// ΠΏΠ»ΠΎΡ ΠΎ $('#items').find('.selected').highlight().end().find('.open').updateCount(); // ΠΏΠ»ΠΎΡ ΠΎ $('#items'). find('.selected'). highlight(). end(). find('.open'). updateCount(); // Ρ ΠΎΡΠΎΡΠΎ $('#items') .find('.selected') .highlight() .end() .find('.open') .updateCount(); // ΠΏΠ»ΠΎΡ ΠΎ 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); // Ρ ΠΎΡΠΎΡΠΎ 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); // Ρ ΠΎΡΠΎΡΠΎ const leds = stage.selectAll('.led').data(data); const svg = leds.enter().append('svg:svg'); svg.classed('led', true).attr('width', (radius + margin) * 2); const g = svg.append('svg:g'); g.attr('transform', `translate(${radius + margin},${radius + margin})`).call(tron.led);
-
19.7 ΠΡΡΠ°Π²Π»ΡΠΉΡΠ΅ ΠΏΡΡΡΡΡ ΡΡΡΠΎΠΊΡ ΠΌΠ΅ΠΆΠ΄Ρ Π±Π»ΠΎΠΊΠΎΠΌ ΠΊΠΎΠ΄Π° ΠΈ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠ΅ΠΉ.
// ΠΏΠ»ΠΎΡ ΠΎ if (foo) { return bar; } return baz; // Ρ ΠΎΡΠΎΡΠΎ if (foo) { return bar; } return baz; // ΠΏΠ»ΠΎΡ ΠΎ const obj = { foo() { }, bar() { }, }; return obj; // Ρ ΠΎΡΠΎΡΠΎ const obj = { foo() { }, bar() { }, }; return obj; // ΠΏΠ»ΠΎΡ ΠΎ const arr = [ function foo() { }, function bar() { }, ]; return arr; // Ρ ΠΎΡΠΎΡΠΎ const arr = [ function foo() { }, function bar() { }, ]; return arr;
-
19.8 ΠΠ΅ Π΄ΠΎΠ±Π°Π²Π»ΡΠΉΡΠ΅ ΠΎΡΡΡΡΠΏΡ Π΄ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΡΠ»Π΅ ΠΊΠΎΠ΄Π° Π²Π½ΡΡΡΠΈ Π±Π»ΠΎΠΊΠ°. eslint:
padded-blocks
// ΠΏΠ»ΠΎΡ ΠΎ function bar() { console.log(foo); } // ΡΠΎΠΆΠ΅ ΠΏΠ»ΠΎΡ ΠΎ if (baz) { console.log(qux); } else { console.log(foo); } // Ρ ΠΎΡΠΎΡΠΎ function bar() { console.log(foo); } // Ρ ΠΎΡΠΎΡΠΎ if (baz) { console.log(qux); } else { console.log(foo); }
-
19.9 ΠΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΏΡΡΡΡΡ ΡΡΡΠΎΠΊ Π΄Π»Ρ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π°. eslint:
no-multiple-empty-lines
// ΠΏΠ»ΠΎΡ ΠΎ class Person { constructor(fullName, email, birthday) { this.fullName = fullName; this.email = email; this.setAge(birthday); } setAge(birthday) { const today = new Date(); const age = this.getAge(today, birthday); this.age = age; } getAge(today, birthday) { // .. } } // Ρ ΠΎΡΠΎΡΠΎ class Person { constructor(fullName, email, birthday) { this.fullName = fullName; this.email = email; this.setAge(birthday); } setAge(birthday) { const today = new Date(); const age = getAge(today, birthday); this.age = age; } getAge(today, birthday) { // .. } }
-
19.10 ΠΠ΅ Π΄ΠΎΠ±Π°Π²Π»ΡΠΉΡΠ΅ ΠΏΡΠΎΠ±Π΅Π»Ρ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΡΡΠ³Π»ΡΠΌΠΈ ΡΠΊΠΎΠ±ΠΊΠ°ΠΌΠΈ ΠΈ ΠΈΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΡΠΌ. eslint:
space-in-parens
// ΠΏΠ»ΠΎΡ ΠΎ function bar( foo ) { return foo; } // Ρ ΠΎΡΠΎΡΠΎ function bar(foo) { return foo; } // ΠΏΠ»ΠΎΡ ΠΎ if ( foo ) { console.log(foo); } // Ρ ΠΎΡΠΎΡΠΎ if (foo) { console.log(foo); }
-
19.11 ΠΠ΅ Π΄ΠΎΠ±Π°Π²Π»ΡΠΉΡΠ΅ ΠΏΡΠΎΠ±Π΅Π»Ρ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠ²Π°Π΄ΡΠ°ΡΠ½ΡΠΌΠΈ ΡΠΊΠΎΠ±ΠΊΠ°ΠΌΠΈ ΠΈ ΠΈΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΡΠΌ. eslint:
array-bracket-spacing
// ΠΏΠ»ΠΎΡ ΠΎ const foo = [ 1, 2, 3 ]; console.log(foo[ 0 ]); // Ρ ΠΎΡΠΎΡΠΎ const foo = [1, 2, 3]; console.log(foo[0]);
-
19.12 ΠΠΎΠ±Π°Π²Π»ΡΠΉΡΠ΅ ΠΏΡΠΎΠ±Π΅Π»Ρ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΈΠ³ΡΡΠ½ΡΠΌΠΈ ΡΠΊΠΎΠ±ΠΊΠ°ΠΌΠΈ ΠΈ ΠΈΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΡΠΌ. eslint:
object-curly-spacing
// ΠΏΠ»ΠΎΡ ΠΎ const foo = {clark: 'kent'}; // Ρ ΠΎΡΠΎΡΠΎ const foo = { clark: 'kent' };
-
19.13 Π‘ΡΠ°ΡΠ°ΠΉΡΠ΅ΡΡ Π½Π΅ Π΄ΠΎΠΏΡΡΠΊΠ°ΡΡ, ΡΡΠΎΠ±Ρ ΡΡΡΠΎΠΊΠΈ Π±ΡΠ»ΠΈ Π΄Π»ΠΈΠ½Π½Π΅Π΅ 100 ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² (Π²ΠΊΠ»ΡΡΠ°Ρ ΠΏΡΠΎΠ±Π΅Π»Ρ). ΠΠ°ΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: ΡΠΎΠ³Π»Π°ΡΠ½ΠΎ ΠΏΡΠ½ΠΊΡΡ Π²ΡΡΠ΅, Π΄Π»ΠΈΠ½Π½ΡΠ΅ ΡΡΡΠΎΠΊΠΈ Ρ ΡΠ΅ΠΊΡΡΠΎΠΌ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°ΡΡΡΡ ΠΎΡ ΡΡΠΎΠ³ΠΎ ΠΏΡΠ°Π²ΠΈΠ»Π° ΠΈ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ°Π·Π±ΠΈΠ²Π°ΡΡΡΡ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΡΠΎΠΊ. eslint:
max-len
ΠΠΎΡΠ΅ΠΌΡ? ΠΡΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΡΠ΄ΠΎΠ±ΡΡΠ²ΠΎ ΡΡΠ΅Π½ΠΈΡ ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ ΠΊΠΎΠ΄Π°.
// ΠΏΠ»ΠΎΡ ΠΎ const foo = jsonData && jsonData.foo && jsonData.foo.bar && jsonData.foo.bar.baz && jsonData.foo.bar.baz.quux && jsonData.foo.bar.baz.quux.xyzzy; // ΠΏΠ»ΠΎΡ ΠΎ $.ajax({ method: 'POST', url: 'https://airbnb.com/', data: { name: 'John' } }).done(() => console.log('Congratulations!')).fail(() => console.log('You have failed this city.')); // Ρ ΠΎΡΠΎΡΠΎ const foo = jsonData && jsonData.foo && jsonData.foo.bar && jsonData.foo.bar.baz && jsonData.foo.bar.baz.quux && jsonData.foo.bar.baz.quux.xyzzy; // Ρ ΠΎΡΠΎΡΠΎ $.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:
block-spacing
// ΠΏΠ»ΠΎΡ ΠΎ function foo() {return true;} if (foo) { bar = 0;} // Ρ ΠΎΡΠΎΡΠΎ function foo() { return true; } if (foo) { bar = 0; }
-
19.15 ΠΠ·Π±Π΅Π³Π°ΠΉΡΠ΅ ΠΏΡΠΎΠ±Π΅Π»ΠΎΠ² ΠΏΠ΅ΡΠ΅Π΄ Π·Π°ΠΏΡΡΡΠΌΠΈ ΠΈ ΡΡΠ°Π²ΡΡΠ΅ Π΅Π³ΠΎ ΠΏΠΎΡΠ»Π΅. eslint:
comma-spacing
// ΠΏΠ»ΠΎΡ ΠΎ var foo = 1,bar = 2; var arr = [1 , 2]; // Ρ ΠΎΡΠΎΡΠΎ var foo = 1, bar = 2; var arr = [1, 2];
-
19.16 ΠΠ·Π±Π΅Π³Π°ΠΉΡΠ΅ ΠΏΡΠΎΠ±Π΅Π»ΠΎΠ² Π²Π½ΡΡΡΠΈ ΡΠΊΠΎΠ±ΠΎΠΊ Π²ΡΡΠΈΡΠ»ΡΠ΅ΠΌΠΎΠ³ΠΎ ΡΠ²ΠΎΠΉΡΡΠ²Π°. eslint:
computed-property-spacing
// ΠΏΠ»ΠΎΡ ΠΎ obj[foo ] obj[ 'foo'] var x = {[ b ]: a} obj[foo[ bar ]] // Ρ ΠΎΡΠΎΡΠΎ obj[foo] obj['foo'] var x = { [b]: a } obj[foo[bar]]
-
19.17 ΠΠ·Π±Π΅Π³Π°ΠΉΡΠ΅ ΠΏΡΠΎΠ±Π΅Π»ΠΎΠ² ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ ΠΈ ΠΈΡ Π²ΡΠ·ΠΎΠ²Π°ΠΌΠΈ. eslint:
func-call-spacing
// ΠΏΠ»ΠΎΡ ΠΎ func (); func (); // Ρ ΠΎΡΠΎΡΠΎ func();
-
19.18 ΠΠ±Π΅ΡΠΏΠ΅ΡΡΡΠ΅ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΡΠ°ΡΡΡΠΎΡΠ½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠ»ΡΡΠ°ΠΌΠΈ ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ Π² ΡΠ²ΠΎΠΉΡΡΠ²Π°Ρ Π»ΠΈΡΠ΅ΡΠ°Π»ΠΎΠ² ΠΎΠ±ΡΠ΅ΠΊΡΠ°. eslint:
key-spacing
// ΠΏΠ»ΠΎΡ ΠΎ var obj = { foo : 42 }; var obj2 = { foo:42 }; // Ρ ΠΎΡΠΎΡΠΎ var obj = { foo: 42 };
- 19.19 ΠΠ·Π±Π΅Π³Π°ΠΉΡΠ΅ ΠΏΡΠΎΠ±Π΅Π»ΠΎΠ² Π² ΠΊΠΎΠ½ΡΠ΅ ΡΡΡΠΎΠΊΠΈ. eslint:
no-trailing-spaces
-
19.20 ΠΠ·Π±Π΅Π³Π°ΠΉΡΠ΅ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° ΠΏΡΡΡΡΡ ΡΡΡΠΎΠΊ ΠΈ Π½ΠΎΠ²ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ Π² Π½Π°ΡΠ°Π»Π΅ ΡΠ°ΠΉΠ»ΠΎΠ². Π Π°Π·ΡΠ΅ΡΠ°ΠΉΡΠ΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½Ρ ΠΏΡΡΡΡΡ ΡΡΡΠΎΠΊΡ Π² ΠΊΠΎΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Π°. eslint:
no-multiple-empty-lines
// ΠΏΠ»ΠΎΡ ΠΎ - ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΏΡΡΡΡΡ ΡΡΡΠΎΠΊ var x = 1; var y = 2; // ΠΏΠ»ΠΎΡ ΠΎ - 2+ Π½ΠΎΠ²ΡΡ ΡΡΡΠΎΠΊ Π² ΠΊΠΎΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Π° var x = 1; var y = 2; // ΠΏΠ»ΠΎΡ ΠΎ - 1+ Π½ΠΎΠ²Π°Ρ ΡΡΡΠΎΠΊΠ° Π² Π½Π°ΡΠ°Π»Π΅ ΡΠ°ΠΉΠ»Π° var x = 1; var y = 2; // Ρ ΠΎΡΠΎΡΠΎ var x = 1; var y = 2;
-
20.1 ΠΠ΅ Π½Π°ΡΠΈΠ½Π°ΠΉΡΠ΅ ΡΡΡΠΎΠΊΡ Ρ Π·Π°ΠΏΡΡΠΎΠΉ. eslint:
comma-style
// ΠΏΠ»ΠΎΡ ΠΎ const story = [ once , upon , aTime ]; // Ρ ΠΎΡΠΎΡΠΎ const story = [ once, upon, aTime, ]; // ΠΏΠ»ΠΎΡ ΠΎ const hero = { firstName: 'Ada' , lastName: 'Lovelace' , birthYear: 1815 , superPower: 'computers' }; // Ρ ΠΎΡΠΎΡΠΎ const hero = { firstName: 'Ada', lastName: 'Lovelace', birthYear: 1815, superPower: 'computers', };
-
20.2 ΠΠΎΠ±Π°Π²Π»ΡΠΉΡΠ΅ Π²ΠΈΡΡΡΠΈΠ΅ Π·Π°ΠΏΡΡΡΠ΅. eslint:
comma-dangle
ΠΠΎΡΠ΅ΠΌΡ? Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ Π΄Π°ΡΡ ΠΏΠΎΠ½ΡΡΠ½ΡΡ ΡΠ°Π·Π½ΠΈΡΡ ΠΏΡΠΈ ΠΏΡΠΎΡΠΌΠΎΡΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΡΡΠ°Π½ΡΠΏΠΈΠ»ΡΡΠΎΡΡ ΡΠΈΠΏΠ° Babel ΡΠ΄Π°Π»ΡΡ Π²ΠΈΡΡΡΠΈΠ΅ Π·Π°ΠΏΡΡΡΠ΅ ΠΈΠ· ΡΠΎΠ±ΡΠ°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, ΠΏΠΎΡΡΠΎΠΌΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π΅ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΈΡΡΡΡ ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°Ρ Π² ΡΡΠ°ΡΡΡ Π±ΡΠ°ΡΠ·Π΅ΡΠ°Ρ .
// ΠΏΠ»ΠΎΡ ΠΎ - git diff Π±Π΅Π· Π²ΠΈΡΡΡΠ΅ΠΉ Π·Π°ΠΏΡΡΠΎΠΉ const hero = { firstName: 'Florence', - lastName: 'Nightingale' + lastName: 'Nightingale', + inventorOf: ['coxcomb chart', 'modern nursing'] }; // Ρ ΠΎΡΠΎΡΠΎ - git diff Ρ Π²ΠΈΡΡΡΠ΅ΠΉ Π·Π°ΠΏΡΡΠΎΠΉ const hero = { firstName: 'Florence', lastName: 'Nightingale', + inventorOf: ['coxcomb chart', 'modern nursing'], };
// ΠΏΠ»ΠΎΡ ΠΎ const hero = { firstName: 'Dana', lastName: 'Scully' }; const heroes = [ 'Batman', 'Superman' ]; // Ρ ΠΎΡΠΎΡΠΎ const hero = { firstName: 'Dana', lastName: 'Scully', }; const heroes = [ 'Batman', 'Superman', ]; // ΠΏΠ»ΠΎΡ ΠΎ function createHero( firstName, lastName, inventorOf ) { // Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ } // Ρ ΠΎΡΠΎΡΠΎ function createHero( firstName, lastName, inventorOf, ) { // Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ } // Ρ ΠΎΡΠΎΡΠΎ (ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π²ΠΈΡΡΡΠ΅ΠΉ Π·Π°ΠΏΡΡΠΎΠΉ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΠΏΠΎΡΠ»Π΅ rest-ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°) function createHero( firstName, lastName, inventorOf, ...heroArgs ) { // Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ } // ΠΏΠ»ΠΎΡ ΠΎ createHero( firstName, lastName, inventorOf ); // Ρ ΠΎΡΠΎΡΠΎ createHero( firstName, lastName, inventorOf, ); // Ρ ΠΎΡΠΎΡΠΎ (ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π²ΠΈΡΡΡΠ΅ΠΉ Π·Π°ΠΏΡΡΠΎΠΉ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΠΏΠΎΡΠ»Π΅ rest-Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°) createHero( firstName, lastName, inventorOf, ...heroArgs );
-
ΠΠΎΡΠ΅ΠΌΡ? ΠΠΎΠ³Π΄Π° JavaScript Π²ΡΡΡΠ΅ΡΠ°Π΅Ρ ΠΏΠ΅ΡΠ΅Π½ΠΎΡ ΡΡΡΠΎΠΊΠΈ Π±Π΅Π· ΡΠΎΡΠΊΠΈ Ρ Π·Π°ΠΏΡΡΠΎΠΉ, ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΡΡΠ°Π²ΠΊΠ° Π’ΠΎΡΠΊΠΈ Ρ Π·Π°ΠΏΡΡΠΎΠΉ (Automatic Semicolon Insertion), ΡΡΠΎΠ±Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, ΡΡΠΎΠΈΡ Π»ΠΈ ΡΡΠΈΡΠ°ΡΡ ΡΡΠΎΡ ΠΏΠ΅ΡΠ΅Π½ΠΎΡ ΡΡΡΠΎΠΊΠΈ ΠΊΠ°ΠΊ ΠΊΠΎΠ½Π΅Ρ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈ (ΠΊΠ°ΠΊ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΠ· Π½Π°Π·Π²Π°Π½ΠΈΡ) ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΡ ΡΠΎΡΠΊΡ Ρ Π·Π°ΠΏΡΡΠΎΠΉ Π² Π²Π°ΡΠ΅ΠΌ ΠΊΠΎΠ΄Π΅ Π΄ΠΎ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠ° ΡΡΡΠΎΠΊΠΈ. ΠΠ΄Π½Π°ΠΊΠΎ, ASI ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΡΠ°Π½Π½ΡΡ ΡΠΎΡΠΌ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ, ΠΈ Π²Π°Ρ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ»ΠΎΠΌΠ°Π½, Π΅ΡΠ»ΠΈ JavaScript Π½Π΅Π²Π΅ΡΠ½ΠΎ ΠΈΡΡΠΎΠ»ΠΊΡΠ΅Ρ Π²Π°Ρ ΠΏΠ΅ΡΠ΅Π½ΠΎΡ ΡΡΡΠΎΠΊΠΈ. ΠΡΠΈ ΠΏΡΠ°Π²ΠΈΠ»Π° ΡΡΠ°Π½ΡΡ ΡΠ»ΠΎΠΆΠ½Π΅Π΅, ΠΊΠΎΠ³Π΄Π° Π½ΠΎΠ²ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΡΠ°Π½ΡΡ ΡΠ°ΡΡΡΡ JavaScript. Π―Π²Π½ΠΎΠ΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ Π²Π°ΡΠΈΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠ° Π²Π°ΡΠ΅Π³ΠΎ Π»ΠΈΠ½ΡΠ΅ΡΠ° Π΄Π»Ρ ΡΠ»Π°Π²Π»ΠΈΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠΏΡΡΠ΅Π½Π½ΡΡ ΡΠΎΡΠ΅ΠΊ Ρ Π·Π°ΠΏΡΡΡΠΌΠΈ ΠΏΠΎΠΌΠΎΠ³ΡΡ Π²Π°ΠΌ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠΈΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌ.
// ΠΏΠ»ΠΎΡ ΠΎ - Π²ΡΠ±ΡΠ°ΡΡΠ²Π°Π΅Ρ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ const luke = {} const leia = {} [luke, leia].forEach((jedi) => jedi.father = 'vader') // ΠΏΠ»ΠΎΡ ΠΎ - Π²ΡΠ±ΡΠ°ΡΡΠ²Π°Π΅Ρ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ const reaction = "No! Thatβs impossible!" (async function meanwhileOnTheFalcon() { // ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΠΌΡΡ ΠΊ `leia`, `lando`, `chewie`, `r2`, `c3p0` // ... }()) // ΠΏΠ»ΠΎΡ ΠΎ - Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ `undefined` Π²ΠΌΠ΅ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π½Π° ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΡΡΠΎΠΊΠ΅. Π’Π°ΠΊ Π²ΡΠ΅Π³Π΄Π° ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ, ΠΊΠΎΠ³Π΄Π° `return` ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ ΡΠ°ΠΌ ΠΏΠΎ ΡΠ΅Π±Π΅, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ASI (ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΡΡΠ°Π²ΠΊΠ° Π’ΠΎΡΠΊΠΈ Ρ Π·Π°ΠΏΡΡΠΎΠΉ)! function foo() { return 'search your feelings, you know it to be foo' } // Ρ ΠΎΡΠΎΡΠΎ const luke = {}; const leia = {}; [luke, leia].forEach((jedi) => { jedi.father = 'vader'; }); // Ρ ΠΎΡΠΎΡΠΎ const reaction = "No! Thatβs impossible!"; (async function meanwhileOnTheFalcon() { // ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΠΌΡΡ ΠΊ `leia`, `lando`, `chewie`, `r2`, `c3p0` // ... }()); // Ρ ΠΎΡΠΎΡΠΎ function foo() { return 'search your feelings, you know it to be foo'; }
- 22.1 ΠΡΠΏΠΎΠ»Π½ΡΠΉΡΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΠΈΠΏΠΎΠ² Π² Π½Π°ΡΠ°Π»Π΅ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ.
-
22.2 Π‘ΡΡΠΎΠΊΠΈ: eslint:
no-new-wrappers
// => this.reviewScore = 9; // ΠΏΠ»ΠΎΡ ΠΎ const totalScore = new String(this.reviewScore); // ΡΠΈΠΏ totalScore Π±ΡΠ΄Π΅Ρ "object", Π° Π½Π΅ "string" // ΠΏΠ»ΠΎΡ ΠΎ const totalScore = this.reviewScore + ''; // Π²ΡΠ·ΡΠ²Π°Π΅Ρ this.reviewScore.valueOf() // ΠΏΠ»ΠΎΡ ΠΎ const totalScore = this.reviewScore.toString(); // Π½Π΅Ρ Π³Π°ΡΠ°Π½ΡΠΈΠΈ ΡΡΠΎ Π²Π΅ΡΠ½ΡΡΡΡ ΡΡΡΠΎΠΊΠ° // Ρ ΠΎΡΠΎΡΠΎ const totalScore = String(this.reviewScore);
-
22.3 Π§ΠΈΡΠ»Π°: ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅
Number
ΠΈparseInt
Ρ ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠΈΡΡΠ΅ΠΌΡ ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ. eslint:radix
no-new-wrappers
ΠΠΎΡΠ΅ΠΌΡ? Π€ΡΠ½ΠΊΡΠΈΡ
parseInt
Π²ΡΠ΄Π°ΡΡ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΈΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ ΡΡΡΠΎΠΊΠΎΠ²ΠΎΠ³ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΡΠΊΠ°Π·Π°Π½Π½ΡΠΌ ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ. ΠΠ°ΡΠ°Π»ΡΠ½ΡΠΉ ΠΏΡΠΎΠ±Π΅Π» Π² ΡΡΡΠΎΠΊΠ΅ ΠΈΠ³Π½ΠΎΡΠΈΡΡΠ΅ΡΡΡ. ΠΡΠ»ΠΈ ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠ΅ "Π½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ" ΠΈΠ»ΠΈ "0", ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ, ΡΡΠΎ ΠΎΠ½ΠΎ ΡΠ°Π²Π½ΠΎ "10", Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅Π², ΠΊΠΎΠ³Π΄Π° ΡΠΈΡΠ»ΠΎ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ ΠΏΠ°Ρ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² "0x" ΠΈΠ»ΠΈ "0X", Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ, ΡΡΠΎ ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°Π²Π½ΠΎ 16. ΠΡΠΎ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ ECMAScript 3, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΎΡΡΠΎ Π½Π΅ ΠΏΠΎΠΎΡΡΡΠ» (Π½ΠΎ ΡΠ°Π·ΡΠ΅ΡΠ°Π») Π²ΠΎΡΡΠΌΠ΅ΡΠΈΡΠ½ΡΡ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΈΡ. ΠΠ½ΠΎΠ³ΠΈΠ΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π½Π΅ ΠΏΡΠΈΠ½ΡΠ»ΠΈ ΡΠ°ΠΊΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ Π½Π° 2013 Π³ΠΎΠ΄. Π, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΡΠ°ΡΡΠ΅ Π±ΡΠ°ΡΠ·Π΅ΡΡ, Π²ΡΠ΅Π³Π΄Π° ΡΠΊΠ°Π·ΡΠ²Π°ΠΉΡΠ΅ ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠ΅.const inputValue = '4'; // ΠΏΠ»ΠΎΡ ΠΎ const val = new Number(inputValue); // ΠΏΠ»ΠΎΡ ΠΎ const val = +inputValue; // ΠΏΠ»ΠΎΡ ΠΎ const val = inputValue >> 0; // ΠΏΠ»ΠΎΡ ΠΎ const val = parseInt(inputValue); // Ρ ΠΎΡΠΎΡΠΎ const val = Number(inputValue); // Ρ ΠΎΡΠΎΡΠΎ const val = parseInt(inputValue, 10);
-
22.4 ΠΡΠ»ΠΈ ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΏΡΠΈΡΠΈΠ½Π΅ Π²Ρ Π΄Π΅Π»Π°Π΅ΡΠ΅ ΡΡΠΎ-ΡΠΎ Π½Π°ΡΡΠΎΠ»ΡΠΊΠΎ Π±Π΅Π·ΡΠΌΠ½ΠΎΠ΅, ΡΡΠΎ
parseInt
ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ»Π°Π±ΡΠΌ ΠΌΠ΅ΡΡΠΎΠΌ ΠΈ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΡΠΉ ΡΠ΄Π²ΠΈΠ³ ΠΈΠ·-Π·Π° Π²ΠΎΠΏΡΠΎΡΠΎΠ² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ, ΠΎΡΡΠ°Π²ΡΡΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ, ΠΎΠ±ΡΡΡΠ½ΡΡΡΠΈΠΉ ΠΏΠΎΡΠ΅ΠΌΡ ΠΈ ΡΡΠΎ Π²Ρ Π΄Π΅Π»Π°Π΅ΡΠ΅.// Ρ ΠΎΡΠΎΡΠΎ /** * ΡΡΠΎΡ ΠΊΠΎΠ΄ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π» ΠΈΠ·-Π·Π° parseInt. * ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΡΠΉ ΡΠ΄Π²ΠΈΠ³ ΡΡΡΠΎΠΊΠΈ Π΄Π»Ρ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΡ Π΅Ρ ΠΊ ΡΠΈΡΠ»Ρ * ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π±ΡΡΡΡΠ΅Π΅. */ const val = inputValue >> 0;
-
22.5 ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: ΠΡΠ΄ΡΡΠ΅ ΠΎΡΡΠΎΡΠΎΠΆΠ½Ρ Ρ ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΡΠΌΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΠΌΠΈ. Π§ΠΈΡΠ»Π° Π² JavaScript ΡΠ²Π»ΡΡΡΡΡ 64-Π±ΠΈΡΠ½ΡΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ, Π½ΠΎ ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π²ΡΠ΅Π³Π΄Π° Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ 32-Π±ΠΈΡΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ (ΠΈΡΡΠΎΡΠ½ΠΈΠΊ). ΠΠΎΠ±ΠΈΡΠΎΠ²ΡΠΉ ΡΠ΄Π²ΠΈΠ³ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎΠΌΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ Π΄Π»Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π±ΠΎΠ»ΡΡΠ΅, ΡΠ΅ΠΌ 32 Π±ΠΈΡΠ°. ΠΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΠ΅. ΠΠ΅ΡΡ Π½ΠΈΠΉ ΠΏΡΠ΅Π΄Π΅Π» β 2Β 147Β 483Β 647:
2147483647 >> 0; // => 2147483647 2147483648 >> 0; // => -2147483648 2147483649 >> 0; // => -2147483647
-
22.6 ΠΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠΈΠΏΡ: eslint:
no-new-wrappers
const age = 0; // ΠΏΠ»ΠΎΡ ΠΎ const hasAge = new Boolean(age); // Ρ ΠΎΡΠΎΡΠΎ const hasAge = Boolean(age); // ΠΎΡΠ»ΠΈΡΠ½ΠΎ const hasAge = !!age;
-
23.1 ΠΠ·Π±Π΅Π³Π°ΠΉΡΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠΉ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ Π±ΡΠΊΠ²Ρ. ΠΠΌΡ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ Π½Π°Π³Π»ΡΠ΄Π½ΡΠΌ. eslint:
id-length
// ΠΏΠ»ΠΎΡ ΠΎ function q() { // ... } // Ρ ΠΎΡΠΎΡΠΎ function query() { // ... }
-
23.2 ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅
camelCase
Π΄Π»Ρ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠ². eslint:camelcase
// ΠΏΠ»ΠΎΡ ΠΎ const OBJEcttsssss = {}; const this_is_my_object = {}; function c() {} // Ρ ΠΎΡΠΎΡΠΎ const thisIsMyObject = {}; function thisIsMyFunction() {}
-
23.3 ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅
PascalCase
ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠΎΠ² ΠΈ ΠΊΠ»Π°ΡΡΠΎΠ². eslint:new-cap
// ΠΏΠ»ΠΎΡ ΠΎ function user(options) { this.name = options.name; } const bad = new user({ name: 'nope', }); // Ρ ΠΎΡΠΎΡΠΎ class User { constructor(options) { this.name = options.name; } } const good = new User({ name: 'yup', });
-
23.4 ΠΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅
_
Π² Π½Π°ΡΠ°Π»Π΅ ΠΈΠ»ΠΈ Π² ΠΊΠΎΠ½ΡΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠΉ. eslint:no-underscore-dangle
ΠΠΎΡΠ΅ΠΌΡ? JavaScript Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΈ ΠΏΡΠΈΠ²Π°ΡΠ½ΠΎΡΡΠΈ ΡΠ²ΠΎΠΉΡΡΠ² ΠΈΠ»ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ². Π₯ΠΎΡΡ ΠΏΠΎΠ΄ΡΡΡΠΊΠΈΠ²Π°Π½ΠΈΠ΅ Π² Π½Π°ΡΠ°Π»Π΅ ΠΈΠΌΠ΅Π½ΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ½Π½ΡΠΌ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Β«ΠΏΡΠΈΠ²Π°ΡΠ½ΠΎΡΡΡΒ», ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΡΡΠΈ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΡΠ²Π»ΡΡΡΡΡ ΡΠ°ΠΊΠΈΠΌΠΈ ΠΆΠ΅ Π΄ΠΎΡΡΡΠΏΠ½ΡΠΌΠΈ, ΠΊΠ°ΠΊ ΠΈ ΡΠ°ΡΡΡ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠ±Π»ΠΈΡΠ½ΠΎΠ³ΠΎ API. ΠΡΠΎ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΡΠΎΠΌΡ, ΡΡΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ Π±ΡΠ΄ΡΡ ΠΎΡΠΈΠ±ΠΎΡΠ½ΠΎ Π΄ΡΠΌΠ°ΡΡ, ΡΡΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π½Π΅ ΠΏΡΠΈΠ²Π΅Π΄ΡΡ ΠΊ ΠΏΠΎΠ»ΠΎΠΌΠΊΠ΅ ΠΈΠ»ΠΈ ΡΡΠΎ ΡΠ΅ΡΡΡ Π½Π΅ Π½ΡΠΆΠ½Ρ. ΠΡΠΎΠ³: Π΅ΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅, ΡΡΠΎΠ±Ρ ΡΡΠΎ-ΡΠΎ Π±ΡΠ»ΠΎ Β«ΠΏΡΠΈΠ²Π°ΡΠ½ΡΠΌΒ», ΡΠΎ ΠΎΠ½ΠΎ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ Π΄ΠΎΡΡΡΠΏΠ½ΠΎ ΠΈΠ·Π²Π½Π΅.
// ΠΏΠ»ΠΎΡ ΠΎ this.__firstName__ = 'Panda'; this.firstName_ = 'Panda'; this._firstName = 'Panda'; // Ρ ΠΎΡΠΎΡΠΎ this.firstName = 'Panda'; // Ρ ΠΎΡΠΎΡΠΎ, Π² ΡΡΠ΅Π΄Π°Ρ , Π³Π΄Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ WeakMaps // ΡΠΌΠΎΡΡΠΈΡΠ΅ https://kangax.github.io/compat-table/es6/#test-WeakMap const firstNames = new WeakMap(); firstNames.set(this, 'Panda');
-
23.5 ΠΠ΅ ΡΠΎΡ ΡΠ°Π½ΡΠΉΡΠ΅ ΡΡΡΠ»ΠΊΡ Π½Π°
this
. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΡΡΠ΅Π»ΠΎΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΠ»ΠΈ ΠΌΠ΅ΡΠΎΠ΄ bind().// ΠΏΠ»ΠΎΡ ΠΎ function foo() { const self = this; return function () { console.log(self); }; } // ΠΏΠ»ΠΎΡ ΠΎ function foo() { const that = this; return function () { console.log(that); }; } // Ρ ΠΎΡΠΎΡΠΎ function foo() { return () => { console.log(this); }; }
-
23.6 ΠΠ°Π·Π²Π°Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»Π° ΡΠΎΡΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ Π΅Π³ΠΎ ΡΠΊΡΠΏΠΎΡΡΠ° ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ.
// ΡΠΎΠ΄Π΅ΡΠΆΠ°Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»Π° 1 class CheckBox { // ... } export default CheckBox; // ΡΠΎΠ΄Π΅ΡΠΆΠ°Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»Π° 2 export default function fortyTwo() { return 42; } // ΡΠΎΠ΄Π΅ΡΠΆΠ°Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»Π° 3 export default function insideDirectory() {} // Π² Π΄ΡΡΠ³ΠΈΡ ΡΠ°ΠΉΠ»Π°Ρ // ΠΏΠ»ΠΎΡ ΠΎ import CheckBox from './checkBox'; // PascalCase import/export, camelCase filename import FortyTwo from './FortyTwo'; // PascalCase import/filename, camelCase export import InsideDirectory from './InsideDirectory'; // PascalCase import/filename, camelCase export // ΠΏΠ»ΠΎΡ ΠΎ import CheckBox from './check_box'; // PascalCase import/export, snake_case filename import forty_two from './forty_two'; // snake_case import/filename, camelCase export import inside_directory from './inside_directory'; // snake_case import, camelCase export import index from './inside_directory/index'; // requiring the index file explicitly import insideDirectory from './insideDirectory/index'; // requiring the index file explicitly // Ρ ΠΎΡΠΎΡΠΎ import CheckBox from './CheckBox'; // PascalCase export/import/filename import fortyTwo from './fortyTwo'; // camelCase export/import/filename import insideDirectory from './insideDirectory'; // camelCase export/import/directory name/implicit "index" // ^ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΎΠ±Π° Π²Π°ΡΠΈΠ°Π½ΡΠ°: insideDirectory.js ΠΈ insideDirectory/index.js
-
23.7 ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅
camelCase
, ΠΊΠΎΠ³Π΄Π° ΡΠΊΡΠΏΠΎΡΡΠΈΡΡΠ΅ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ. ΠΠ°Ρ ΡΠ°ΠΉΠ» Π΄ΠΎΠ»ΠΆΠ΅Π½ Π½Π°Π·ΡΠ²Π°ΡΡΡΡ ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ ΠΈΠΌΡ ΡΡΠ½ΠΊΡΠΈΠΈ.function makeStyleGuide() { // ... } export default makeStyleGuide;
-
23.8 ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅
PascalCase
, ΠΊΠΎΠ³Π΄Π° ΡΠΊΡΠΏΠΎΡΡΠΈΡΡΠ΅ΡΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ / ΠΊΠ»Π°ΡΡ / ΡΠΈΠ½Π³Π»ΡΠΎΠ½ / Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ / ΠΎΠ±ΡΠ΅ΠΊΡ.const AirbnbStyleGuide = { es6: { }, }; export default AirbnbStyleGuide;
-
23.9 Π‘ΠΎΠΊΡΠ°ΡΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ Π±ΡΠΊΠ²Π΅Π½Π½ΡΠ΅ Π°Π±Π±ΡΠ΅Π²ΠΈΠ°ΡΡΡΡ Π²ΡΠ΅Π³Π΄Π° Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π² Π²Π΅ΡΡ Π½Π΅ΠΌ ΠΈΠ»ΠΈ Π½ΠΈΠΆΠ½Π΅ΠΌ ΡΠ΅Π³ΠΈΡΡΡΠ΅.
ΠΠΎΡΠ΅ΠΌΡ? ΠΠΌΠ΅Π½Π° ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Ρ Π΄Π»Ρ ΡΠ΄ΠΎΠ±ΡΡΠ²Π° ΡΡΠ΅Π½ΠΈΡ.
// ΠΏΠ»ΠΎΡ ΠΎ import SmsContainer from './containers/SmsContainer'; // ΠΏΠ»ΠΎΡ ΠΎ const HttpRequests = [ // ... ]; // Ρ ΠΎΡΠΎΡΠΎ import SMSContainer from './containers/SMSContainer'; // Ρ ΠΎΡΠΎΡΠΎ const HTTPRequests = [ // ... ]; // ΡΠ°ΠΊΠΆΠ΅ Ρ ΠΎΡΠΎΡΠΎ const httpRequests = [ // ... ]; // ΠΎΡΠ»ΠΈΡΠ½ΠΎ import TextMessageContainer from './containers/TextMessageContainer'; // ΠΎΡΠ»ΠΈΡΠ½ΠΎ const requests = [ // ... ];
- 24.1 Π€ΡΠ½ΠΊΡΠΈΠΈ-Π°ΠΊΡΠ΅ΡΡΠΎΡΡ Π΄Π»Ρ ΡΠ²ΠΎΠΉΡΡΠ² ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ Π½ΡΠΆΠ½Ρ.
-
24.2 ΠΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π³Π΅ΡΡΠ΅ΡΡ/ΡΠ΅ΡΡΠ΅ΡΡ, Ρ.ΠΊ. ΠΎΠ½ΠΈ Π²ΡΠ·ΡΠ²Π°ΡΡ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΡΠ΅ ΠΏΠΎΠ±ΠΎΡΠ½ΡΠ΅ ΡΡΡΠ΅ΠΊΡΡ, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΈΡ ΡΡΠΆΠ΅Π»ΠΎ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΠΈ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ. ΠΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ
getVal()
ΠΈsetVal('hello')
.// ΠΏΠ»ΠΎΡ ΠΎ class Dragon { get age() { // ... } set age(value) { // ... } } // Ρ ΠΎΡΠΎΡΠΎ class Dragon { getAge() { // ... } setAge(value) { // ... } }
-
24.3 ΠΡΠ»ΠΈ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ/ΠΌΠ΅ΡΠΎΠ΄ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠΈΠΏ, ΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΡ
isVal()
ΠΈΠ»ΠΈhasVal()
.// ΠΏΠ»ΠΎΡ ΠΎ if (!dragon.age()) { return false; } // Ρ ΠΎΡΠΎΡΠΎ if (!dragon.hasAge()) { return false; }
-
24.4 ΠΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ
get()
ΠΈset()
, Π½ΠΎ Π½ΡΠΆΠ½ΠΎ Π±ΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΠΌ.class Jedi { constructor(options = {}) { const lightsaber = options.lightsaber || 'blue'; this.set('lightsaber', lightsaber); } set(key, val) { this[key] = val; } get(key) { return this[key]; } }
-
25.1 ΠΠΎΠ³Π΄Π° ΠΏΡΠΈΠ²ΡΠ·ΡΠ²Π°Π΅ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΊ ΡΠΎΠ±ΡΡΠΈΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΎΠ±ΡΡΠΈΡ
DOM
ΠΈΠ»ΠΈ ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΡΠΎΠ±ΡΡΠΈΡ, ΠΊΠ°ΠΊBackbone
ΡΠΎΠ±ΡΡΠΈΡ), ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΠΉΡΠ΅ Π»ΠΈΡΠ΅ΡΠ°Π» ΠΎΠ±ΡΠ΅ΠΊΡΠ° (ΡΠ°ΠΊΠΆΠ΅ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠΉ ΠΊΠ°ΠΊ Β«Ρ ΡΡΒ») Π²ΠΌΠ΅ΡΡΠΎ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π΄ΡΡΠ³ΠΈΠΌ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ Π±ΠΎΠ»ΡΡΠ΅ Π΄Π°Π½Π½ΡΡ Π±Π΅Π· ΠΏΠΎΠΈΡΠΊΠ° ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° ΡΠΎΠ±ΡΡΠΈΡ. Π ΠΏΡΠΈΠΌΠ΅ΡΡ, Π²ΠΌΠ΅ΡΡΠΎ:// ΠΏΠ»ΠΎΡ ΠΎ $(this).trigger('listingUpdated', listing.id); // ... $(this).on('listingUpdated', (e, listingID) => { // Π΄Π΅Π»Π°Π΅Ρ ΡΡΠΎ-ΡΠΎ Ρ listingID });
ΠΏΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°ΠΉΡΠ΅:
// Ρ ΠΎΡΠΎΡΠΎ $(this).trigger('listingUpdated', { listingID: listing.id }); // ... $(this).on('listingUpdated', (e, data) => { // Π΄Π΅Π»Π°Π΅Ρ ΡΡΠΎ-ΡΠΎ Ρ data.listingID });
-
26.1 ΠΠ°ΡΠΈΠ½Π°ΠΉΡΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ , Ρ ΡΠ°Π½ΡΡΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡ jQuery, ΡΠΎ Π·Π½Π°ΠΊΠ°
$
.// ΠΏΠ»ΠΎΡ ΠΎ const sidebar = $('.sidebar'); // Ρ ΠΎΡΠΎΡΠΎ const $sidebar = $('.sidebar'); // Ρ ΠΎΡΠΎΡΠΎ const $sidebarBtn = $('.sidebar-btn');
-
26.2 ΠΡΡΠΈΡΡΠΉΡΠ΅ jQuery-ΠΏΠΎΠΈΡΠΊΠΈ.
// ΠΏΠ»ΠΎΡ ΠΎ function setSidebar() { $('.sidebar').hide(); // ... $('.sidebar').css({ 'background-color': 'pink', }); } // Ρ ΠΎΡΠΎΡΠΎ function setSidebar() { const $sidebar = $('.sidebar'); $sidebar.hide(); // ... $sidebar.css({ 'background-color': 'pink', }); }
- 26.3 ΠΠ»Ρ ΠΏΠΎΠΈΡΠΊΠ° Π² DOM ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΊΠ°ΡΠΊΠ°Π΄Ρ
$('.sidebar ul')
ΠΈΠ»ΠΈ ΡΠ΅Π»Π΅ΠΊΡΠΎΡ ΡΠΎΠ΄ΠΈΡΠ΅Π»Ρ > ΡΠ΅Π±ΡΠ½ΠΎΠΊ$('.sidebar > ul')
. jsPerf
-
26.4 ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡ
find
Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠ° Π² ΡΠΎΡ ΡΠ°Π½ΡΠ½Π½ΡΡ jQuery-ΠΎΠ±ΡΠ΅ΠΊΡΠ°Ρ .// ΠΏΠ»ΠΎΡ ΠΎ $('ul', '.sidebar').hide(); // ΠΏΠ»ΠΎΡ ΠΎ $('.sidebar').find('ul').hide(); // Ρ ΠΎΡΠΎΡΠΎ $('.sidebar ul').hide(); // Ρ ΠΎΡΠΎΡΠΎ $('.sidebar > ul').hide(); // Ρ ΠΎΡΠΎΡΠΎ $sidebar.find('ul').hide();
- 27.1 ΠΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π² ΡΠ°Π±Π»ΠΈΡΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ ES5 ΠΎΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Kangax .
- 28.1 ΠΠ΄Π΅ΡΡ ΡΠΎΠ±ΡΠ°Π½Ρ ΡΡΡΠ»ΠΊΠΈ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ES6.
- Π‘ΡΡΠ΅Π»ΠΎΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ
- ΠΠ»Π°ΡΡΡ ΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΡ
- Π‘ΠΎΠΊΡΠ°ΡΡΠ½Π½Π°Ρ Π·Π°ΠΏΠΈΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΎΠ±ΡΠ΅ΠΊΡΠ°
- Π‘ΠΎΠΊΡΠ°ΡΡΠ½Π½Π°Ρ Π·Π°ΠΏΠΈΡΡ ΡΠ²ΠΎΠΉΡΡΠ² ΠΎΠ±ΡΠ΅ΠΊΡΠ°
- ΠΡΡΠΈΡΠ»ΡΠ΅ΠΌΡΠ΅ ΠΈΠΌΠ΅Π½Π° ΡΠ²ΠΎΠΉΡΡΠ² ΠΎΠ±ΡΠ΅ΠΊΡΠ°
- Π¨Π°Π±Π»ΠΎΠ½Π½ΡΠ΅ ΡΡΡΠΎΠΊΠΈ
- ΠΠ΅ΡΡΡΡΠΊΡΡΡΠΈΠ·Π°ΡΠΈΡ
- ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ
- ΠΡΡΠ°Π²ΡΠΈΠ΅ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ
- ΠΠΏΠ΅ΡΠ°ΡΠΎΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ
- Let ΠΈ Const
- ΠΡΠ΅ΡΠ°ΡΠΎΡΡ ΠΈ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΡ
- ΠΠΎΠ΄ΡΠ»ΠΈ
-
28.2 ΠΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡ TC39, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΠΏΠ΅ΡΠ΅ΡΠ»ΠΈ Π½Π° 3-Ρ ΡΡΠ°Π΄ΠΈΡ.
ΠΠΎΡΠ΅ΠΌΡ? ΠΠ½ΠΈ Π΅ΡΡ Π½Π΅ Π·Π°ΠΊΠΎΠ½ΡΠ΅Π½Ρ ΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ ΠΈΠ»ΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΈΠ·ΡΡΡΡ. ΠΡ Ρ ΠΎΡΠΈΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ JavaScript, Π° ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡ Π΅ΡΡ Π½Π΅ ΡΡΠ°Π»ΠΈ ΡΠ°ΡΡΡΡ JavaScript.
Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΡΠΈΠ»ΠΈΡΡ, ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ ΠΊΠΎΡΠΎΡΡΡ ΡΠ»ΠΎΠΌΠ°Π½Π°, Π½ΠΎ ΠΎΠ½ΠΈ ΠΎΡΡΠ°Π»ΠΈΡΡ Π΄Π»Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ ΡΡΠ°ΡΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.
-
29.1 ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅
Number.isNaN
Π²ΠΌΠ΅ΡΡΠΎ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠ³ΠΎisNaN
. eslint:no-restricted-globals
ΠΠΎΡΠ΅ΠΌΡ? ΠΠ»ΠΎΠ±Π°Π»ΡΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ
isNaN
ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ Π½Π΅-ΡΠΈΡΠ»Π° ΠΊ ΡΠΈΡΠ»Π°ΠΌ, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Ρtrue
Π΄Π»Ρ Π²ΡΠ΅Π³ΠΎ, ΡΡΠΎ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΊNaN
. ΠΡΠ»ΠΈ ΡΠ°ΠΊΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ, ΡΠ΄Π΅Π»Π°ΠΉΡΠ΅ Π΅Π³ΠΎ ΡΠ²Π½ΡΠΌ.// ΠΏΠ»ΠΎΡ ΠΎ isNaN('1.2'); // false isNaN('1.2.3'); // true // Ρ ΠΎΡΠΎΡΠΎ Number.isNaN('1.2.3'); // false Number.isNaN(Number('1.2.3')); // true
-
29.2 ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅
Number.isFinite
Π²ΠΌΠ΅ΡΡΠΎ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠ³ΠΎisFinite
. eslint:no-restricted-globals
ΠΠΎΡΠ΅ΠΌΡ? ΠΠ»ΠΎΠ±Π°Π»ΡΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ
isFinite
ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ Π½Π΅-ΡΠΈΡΠ»Π° ΠΊ ΡΠΈΡΠ»Π°ΠΌ, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Ρtrue
Π΄Π»Ρ Π²ΡΠ΅Π³ΠΎ, ΡΡΠΎ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΊ ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΌΡ ΡΠΈΡΠ»Ρ. ΠΡΠ»ΠΈ ΡΠ°ΠΊΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ, ΡΠ΄Π΅Π»Π°ΠΉΡΠ΅ Π΅Π³ΠΎ ΡΠ²Π½ΡΠΌ.// ΠΏΠ»ΠΎΡ ΠΎ isFinite('2e3'); // true // Ρ ΠΎΡΠΎΡΠΎ Number.isFinite('2e3'); // false Number.isFinite(parseInt('2e3', 10)); // true
-
30.1 ΠΠ³Π°.
function foo() { return true; }
- 30.2 ΠΠ΅Ρ, Π½ΠΎ ΡΠ΅ΡΡΡΠ·Π½ΠΎ:
- ΠΠ°ΠΊΠΎΠΉ Π±Ρ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Π²Ρ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ, Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠΈΡΠ°ΡΡ ΡΠ΅ΡΡΡ!
- Π‘ΡΡΠ΅ΠΌΠΈΡΠ΅ΡΡ ΠΊ ΡΠΎΠΌΡ, ΡΡΠΎΠ±Ρ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠ°Π»Π΅Π½ΡΠΊΠΈΡ ΡΠΈΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΈ ΠΊ ΡΠΎΠΌΡ, ΡΡΠΎΠ±Ρ ΡΠ²Π΅ΡΡΠΈ ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡΠΌΡ ΠΌΠ΅ΡΡΠ°, Π³Π΄Π΅ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΡΡ ΠΌΡΡΠ°ΡΠΈΠΈ.
- ΠΡΠ΄ΡΡΠ΅ ΠΎΡΡΠΎΡΠΎΠΆΠ½Ρ ΡΠΎ ΡΡΠ°Π±Π°ΠΌΠΈ (stubs) ΠΈ ΠΌΠΎΠΊΠ°ΠΌΠΈ (mocks) β ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡΡ ΡΠ΄Π΅Π»Π°ΡΡ Π²Π°ΡΠ΅ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Ρ ΡΡΠΏΠΊΠΈΠΌ.
- ΠΡ Π² ΠΏΠ΅ΡΠ²ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ Π²Π°ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ
mocha
ΠΈjest
ΠΎΡ Airbnb.tape
ΡΠ°ΠΊΠΆΠ΅ ΠΈΠ½ΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΡ , ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ. - 100% ΠΏΠΎΠΊΡΡΡΠΈΠ΅ ΡΠ΅ΡΡΠ°ΠΌΠΈ β ΡΡΠΎ Ρ ΠΎΡΠΎΡΠ°Ρ ΡΠ΅Π»Ρ, ΠΊ ΠΊΠΎΡΠΎΡΠΎΠΉ Π½Π°Π΄ΠΎ ΡΡΡΠ΅ΠΌΠΈΡΡΡΡ, Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΡΡΠΎ Π½Π΅ Π²ΡΠ΅Π³Π΄Π° ΠΏΡΠ°ΠΊΡΠΈΡΠ½ΠΎ.
- ΠΡΡΠΊΠΈΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° Π²Ρ ΠΈΡΠΏΡΠ°Π²Π»ΡΠ΅ΡΠ΅ ΠΎΡΠΈΠ±ΠΊΡ, ΠΏΠΈΡΠΈΡΠ΅ ΡΠ΅Π³ΡΠ΅ΡΡΠΈΠΎΠ½Π½ΡΠΉ ΡΠ΅ΡΡ. ΠΡΠΏΡΠ°Π²Π»Π΅Π½Π½Π°Ρ ΠΎΡΠΈΠ±ΠΊΠ° Π±Π΅Π· ΡΠ΅Π³ΡΠ΅ΡΡΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎΡΡΠΈ Π½Π°Π²Π΅ΡΠ½ΡΠΊΠ° Π²ΡΠΏΠ»ΡΠ²ΡΡ Π² Π±ΡΠ΄ΡΡΠ΅ΠΌ.
- On Layout & Web Performance
- String vs Array Concat
- Try/Catch Cost In a Loop
- Bang Function
- jQuery Find vs Context, Selector
- innerHTML vs textContent for script text
- Long String Concatenation
- Are JavaScript functions like
map()
,reduce()
, andfilter()
optimized for traversing arrays? - ΠΠ°Π³ΡΡΠ·ΠΊΠ°...
ΠΠ·ΡΡΠ΅Π½ΠΈΠ΅ ES6+
- ΠΠΎΡΠ»Π΅Π΄Π½ΡΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ECMA
- ExploringJS
- ES6 Compatibility Table
- Comprehensive Overview of ES6 Features
ΠΠΎΡΠΈΡΠ°ΠΉΡΠ΅ ΡΡΠΎ
ΠΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ
- ΠΠΈΠ½ΡΠ΅ΡΡ
- Neutrino Preset - @neutrinojs/airbnb
ΠΡΡΠ³ΠΈΠ΅ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π°
- Google JavaScript Style Guide
- Google JavaScript Style Guide (Old)
- jQuery Core Style Guidelines
- Principles of Writing Consistent, Idiomatic JavaScript
- StandardJS
ΠΡΡΠ³ΠΈΠ΅ ΡΡΠΈΠ»ΠΈ
- Naming this in nested functions - Christian Johansen
- Conditional Callbacks - Ross Allen
- Popular JavaScript Coding Conventions on GitHub - JeongHoon Byun
- Multiple var statements in JavaScript, not superfluous - Ben Alman
ΠΠ°Π»ΡΠ½Π΅ΠΉΡΠ΅Π΅ ΡΡΠ΅Π½ΠΈΠ΅
- Understanding JavaScript Closures - Angus Croll
- Basic JavaScript for the impatient programmer - Dr. Axel Rauschmayer
- You Might Not Need jQuery - Zack Bloom & Adam Schwartz
- ES6 Features - Luke Hoban
- Frontend Guidelines - Benjamin De Cock
ΠΠ½ΠΈΠ³ΠΈ
- JavaScript: The Good Parts - Douglas Crockford
- JavaScript Patterns - Stoyan Stefanov
- Pro JavaScript Design Patterns - Ross Harmes and Dustin Diaz
- High Performance Web Sites: Essential Knowledge for Front-End Engineers - Steve Souders
- Maintainable JavaScript - Nicholas C. Zakas
- JavaScript Web Applications - Alex MacCaw
- Pro JavaScript Techniques - John Resig
- Smashing Node.js: JavaScript Everywhere - Guillermo Rauch
- Secrets of the JavaScript Ninja - John Resig and Bear Bibeault
- Human JavaScript - Henrik Joreteg
- Superhero.js - Kim Joar Bekkelund, Mads Mobæk, & Olav Bjorkoy
- JSBooks - Julien Bouquillon
- Third Party JavaScript - Ben Vinegar and Anton Kovalyov
- Effective JavaScript: 68 Specific Ways to Harness the Power of JavaScript - David Herman
- Eloquent JavaScript - Marijn Haverbeke
- You Donβt Know JS: ES6 & Beyond - Kyle Simpson
ΠΠ»ΠΎΠ³ΠΈ
- JavaScript Weekly
- JavaScript, JavaScript...
- Bocoup Weblog
- Adequately Good
- NCZOnline
- Perfection Kills
- Ben Alman
- Dmitry Baranovskiy
- nettuts
ΠΠΎΠ΄ΠΊΠ°ΡΡΡ
ΠΡΠΎ ΡΠΏΠΈΡΠΎΠΊ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Π΄Π°Π½Π½ΠΎΠ΅ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ. ΠΡΠΏΡΠ°Π²ΡΡΠ΅ Π½Π°ΠΌ ΠΏΡΠ»ΡΠ΅ΠΊΠ²Π΅ΡΡ, ΠΈ ΠΌΡ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π²Π°Ρ Π² ΡΡΠΎΡ ΡΠΏΠΈΡΠΎΠΊ.
- 123erfasst: 123erfasst/javascript
- 4Catalyzer: 4Catalyzer/javascript
- Aan Zee: AanZee/javascript
- Airbnb: airbnb/javascript
- AloPeyk: AloPeyk
- AltSchool: AltSchool/javascript
- Apartmint: apartmint/javascript
- Ascribe: ascribe/javascript
- Avant: avantcredit/javascript
- Axept: axept/javascript
- Billabong: billabong/javascript
- Bisk: bisk
- Bonhomme: bonhommeparis/javascript
- Brainshark: brainshark/javascript
- CaseNine: CaseNine/javascript
- Cerner: Cerner
- Chartboost: ChartBoost/javascript-style-guide
- Coeur d'Alene Tribe: www.cdatribe-nsn.gov
- ComparaOnline: comparaonline/javascript
- Compass Learning: compasslearning/javascript-style-guide
- DailyMotion: dailymotion/javascript
- DoSomething: DoSomething/eslint-config
- Digitpaint digitpaint/javascript
- Drupal: www.drupal.org
- Ecosia: ecosia/javascript
- Evernote: evernote/javascript-style-guide
- Evolution Gaming: evolution-gaming/javascript
- EvozonJs: evozonjs/javascript
- ExactTarget: ExactTarget/javascript
- Flexberry: Flexberry/javascript-style-guide
- Gawker Media: gawkermedia
- General Electric: GeneralElectric/javascript
- Generation Tux: GenerationTux/javascript
- GoodData: gooddata/gdc-js-style
- GreenChef: greenchef/javascript
- Grooveshark: grooveshark/javascript
- Grupo-Abraxas: Grupo-Abraxas/javascript
- Happeo: happeo/javascript
- Honey: honeyscience/javascript
- How About We: howaboutwe/javascript
- HubSpot: HubSpot/javascript
- Hyper: hyperoslo/javascript-playbook
- InterCity Group: intercitygroup/javascript-style-guide
- Jam3: Jam3/Javascript-Code-Conventions
- JSSolutions: JSSolutions/javascript
- Kaplan Komputing: kaplankomputing/javascript
- KickorStick: kickorstick
- Kinetica Solutions: kinetica/javascript
- LEINWAND: LEINWAND/javascript
- Lonely Planet: lonelyplanet/javascript
- M2GEN: M2GEN/javascript
- Mighty Spring: mightyspring/javascript
- MinnPost: MinnPost/javascript
- MitocGroup: MitocGroup/javascript
- Muber: muber
- National Geographic: natgeo
- NullDev: NullDevCo/JavaScript-Styleguide
- Nulogy: nulogy/javascript
- Orange Hill Development: orangehill/javascript
- Orion Health: orionhealth/javascript
- OutBoxSoft: OutBoxSoft/javascript
- Peerby: Peerby/javascript
- Pier 1: Pier1/javascript
- Qotto: Qotto/javascript-style-guide
- React: facebook.github.io/react/contributing/how-to-contribute.html#style-guide
- REI: reidev/js-style-guide
- Ripple: ripple/javascript-style-guide
- Sainsburyβs Supermarkets: jsainsburyplc
- Shutterfly: shutterfly/javascript
- Sourcetoad: sourcetoad/javascript
- Springload: springload
- StratoDem Analytics: stratodem/javascript
- SteelKiwi Development: steelkiwi/javascript
- StudentSphere: studentsphere/javascript
- SwoopApp: swoopapp/javascript
- SysGarage: sysgarage/javascript-style-guide
- Syzygy Warsaw: syzygypl/javascript
- Target: target/javascript
- Terra: terra
- TheLadders: TheLadders/javascript
- The Nerdery: thenerdery/javascript-standards
- Tomify: tomprats
- Traitify: traitify/eslint-config-traitify
- T4R Technology: T4R-Technology/javascript
- UrbanSim: urbansim
- VoxFeed: VoxFeed/javascript-style-guide
- WeBox Studio: weboxstudio/javascript
- Weggo: Weggo/javascript
- Zillow: zillow/javascript
- ZocDoc: ZocDoc/javascript
ΠΡΠΎ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΡΠ°ΠΊΠΆΠ΅ ΠΏΠ΅ΡΠ΅Π²Π΅Π΄Π΅Π½ΠΎ Π½Π° Π΄ΡΡΠ³ΠΈΠ΅ ΡΠ·ΡΠΊΠΈ:
ΠΡΠ°Π·ΠΈΠ»ΡΡΠΊΠΈΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΠΏΠΎΡΡΡΠ³Π°Π»ΡΡΠΊΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ°: armoucar/javascript-style-guide
ΠΠΎΠ»Π³Π°ΡΡΠΊΠΈΠΉ: borislavvv/javascript
ΠΠ°ΡΠ°Π»ΠΎΠ½ΡΠΊΠΈΠΉ: fpmweb/javascript-style-guide
ΠΠΈΡΠ°ΠΉΡΠΊΠΈΠΉ (Π£ΠΏΡΠΎΡΡΠ½Π½ΡΠΉ): lin-123/javascript
ΠΠΈΡΠ°ΠΉΡΠΊΠΈΠΉ (Π’ΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΡΠΉ): jigsawye/javascript
Π€ΡΠ°Π½ΡΡΠ·ΡΠΊΠΈΠΉ: nmussy/javascript-style-guide
ΠΠ΅ΠΌΠ΅ΡΠΊΠΈΠΉ: timofurrer/javascript-style-guide
ΠΡΠ°Π»ΡΡΠ½ΡΠΊΠΈΠΉ: sinkswim/javascript-style-guide
Π―ΠΏΠΎΠ½ΡΠΊΠΈΠΉ: mitsuruog/javascript-style-guide
ΠΠΎΡΠ΅ΠΉΡΠΊΠΈΠΉ: ParkSB/javascript-style-guide
Π ΡΡΡΠΊΠΈΠΉ: leonidlebedev/javascript-airbnb
ΠΡΠΏΠ°Π½ΡΠΊΠΈΠΉ: paolocarrasco/javascript-style-guide
Π’Π°ΠΉΡΠΊΠΈΠΉ: lvarayut/javascript-style-guide
Π’ΡΡΠ΅ΡΠΊΠΈΠΉ: eraycetinay/javascript
Π£ΠΊΡΠ°ΠΈΠ½ΡΠΊΠΈΠΉ: ivanzusko/javascript
ΠΡΠ΅ΡΠ½Π°ΠΌΡΠΊΠΈΠΉ: dangkyokhoang/javascript-style-guide
- ΠΠ°ΠΉΠ΄ΠΈΡΠ΅ ΠΈΡ Π½Π° gitter.
(The MIT License)
Copyright (c) 2012 Airbnb
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the 'Software'), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
ΠΡ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌ Π²Π°ΠΌ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠΎΡΠΊ ΡΡΠΎΠ³ΠΎ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π° ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ Π΅Π³ΠΎ ΠΏΡΠ°Π²ΠΈΠ»Π° ΠΏΠΎΠ΄ ΡΡΠΈΠ»Ρ Π²Π°ΡΠ΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ. ΠΠΈΠΆΠ΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»ΠΈΡΡ ΡΠ²ΠΎΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π΅. ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ Π²Π°ΠΌ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡ Π΅Π³ΠΎ Π²ΡΠ΅ΠΌΡ ΠΎΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, Π½Π΅ ΡΡΠ°Π»ΠΊΠΈΠ²Π°ΡΡΡ Ρ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠ°ΠΌΠΈ ΡΠ»ΠΈΡΠ½ΠΈΠΉ.