12 рдЬрд╛рднрд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдпреБрдХреНрддрд┐рд╣рд░реВ рдЬреБрди рдзреЗрд░реИ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓рд╣рд░реВ рдорд┐рд╕ рд╣реБрдиреНрдЫрдиреН

12 рдЬрд╛рднрд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдпреБрдХреНрддрд┐рд╣рд░реВ рдЬреБрди рдзреЗрд░реИ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓рд╣рд░реВ рдорд┐рд╕ рд╣реБрдиреНрдЫрдиреН

рдЬрдм рдореИрд▓реЗ рдЬрд╛рднрд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рд┐рдХреНрди рдерд╛рд▓реЗрдБ, рдореИрд▓реЗ рдЧрд░реЗрдХреЛ рдкрд╣рд┐рд▓реЛ рдХреБрд░рд╛ рдЯреНрд░рд┐рдХреНрд╕рд╣рд░реВрдХреЛ рд╕реВрдЪреА рдмрдирд╛рдЙрдиреБ рдерд┐рдпреЛ рдЬрд╕рд▓реЗ рдорд▓рд╛рдИ рд╕рдордп рдмрдЪрдд рдЧрд░реНрди рдорджреНрджрдд рдЧрд░реНтАНрдпреЛред рдореИрд▓реЗ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдЕрдиреНрдп рдкреНрд░реЛрдЧреНрд░рд╛рдорд░рд╣рд░реВрдмрд╛рдЯ, рд╡рд┐рднрд┐рдиреНрди рд╕рд╛рдЗрдЯрд╣рд░реВрдорд╛ рд░ рдореНрдпрд╛рдиреБрдЕрд▓рд╣рд░реВрдорд╛ рджреЗрдЦреЗред

рдпрд╕ рд▓реЗрдЦрдорд╛, рдо рддрдкрд╛рдЗрдБрд▓рд╛рдИ рддрдкрд╛рдЗрдБрдХреЛ JavaScript рдХреЛрдб рд╕реБрдзрд╛рд░ рдЧрд░реНрди рд░ рдЧрддрд┐ рдмрдврд╛рдЙрди 12 рдЙрддреНрдХреГрд╖реНрдЯ рддрд░рд┐рдХрд╛рд╣рд░реВ рджреЗрдЦрд╛рдЙрдиреЗрдЫреБред рдЕрдзрд┐рдХрд╛рдВрд╢ рдЕрд╡рд╕реНрдерд╛рдорд╛ рддрд┐рдиреАрд╣рд░реВ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдЫрдиреНред

рд╣рд╛рдореА рд╕рдореНрдЭрд╛рдЙрдБрдЫреМрдВ: рд╕рдмреИ Habr рдкрд╛рдардХрд╣рд░реВрдХрд╛ рд▓рд╛рдЧрд┐ - Habr рдкреНрд░реЛрдореЛ рдХреЛрдб рдкреНрд░рдпреЛрдЧ рдЧрд░реА рдХреБрдиреИ рдкрдирд┐ Skillbox рдкрд╛рдареНрдпрдХреНрд░рдордорд╛ рднрд░реНрдирд╛ рдЧрд░реНрджрд╛ резреж,режрежреж рд░реВрдмрд▓ рдЫреБрдЯред

Skillbox рд╕рд┐рдлрд╛рд░рд┐рд╕ рдЧрд░реНрджрдЫ: рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдкрд╛рдареНрдпрдХреНрд░рдо "рдореЛрдмрд╛рдЗрд▓ рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛ рдкреНрд░реЛ".

рдЕрджреНрд╡рд┐рддреАрдп рдорд╛рдирд╣рд░реВ рдлрд┐рд▓реНрдЯрд░ рдЧрд░реНрджреИ

ARRAYS

рд╕реЗрдЯ рд╡рд╕реНрддреБ рдкреНрд░рдХрд╛рд░ ES6 рдорд╛ рдкреНрд░рд╕реНрддреБрдд рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ, ..., рд╕реНрдкреНрд░реЗрдб рдЕрдкрд░реЗрдЯрд░рдХреЛ рд╕рд╛рде, рд╣рд╛рдореА рдпрд╕рд▓рд╛рдИ рдЕрджреНрд╡рд┐рддреАрдп рдорд╛рдирд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрдиреЗ рдирдпрд╛рдБ рдПрд░реЗ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдЫреМрдВред

const array = [1, 1, 2, 3, 5, 5, 1]
const uniqueArray = [...new Set(array)];
 
console.log(uniqueArray); // Result: [1, 2, 3, 5]

рд╕рд╛рдорд╛рдиреНрдп рдЕрд╡рд╕реНрдерд╛рдорд╛, рдЙрд╣реА рдЕрдкрд░реЗрд╢рди рдЧрд░реНрди рдзреЗрд░реИ рдХреЛрдб рдЖрд╡рд╢реНрдпрдХ рдЫред

рдпреЛ рдкреНрд░рд╡рд┐рдзрд┐рд▓реЗ рдЖрджрд┐рдо рдкреНрд░рдХрд╛рд░рд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрдиреЗ рдПрд░реЗрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдХрд╛рдо рдЧрд░реНрджрдЫ: рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд, рд╢реВрдиреНрдп, рдмреБрд▓рд┐рдпрди, рд╕реНрдЯреНрд░рд┐рдЩ рд░ рдирдореНрдмрд░ред рдпрджрд┐ рддрдкрд╛рдЗрдБ рд╡рд╕реНрддреБрд╣рд░реВ, рдкреНрд░рдХрд╛рд░реНрдпрд╣рд░реВ, рд╡рд╛ рдЕрддрд┐рд░рд┐рдХреНрдд рдПрд░реЗрд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрдиреЗ рдПрд░реЗрд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрджреИ рд╣реБрдиреБрд╣реБрдиреНрдЫ рднрдиреЗ, рддрдкрд╛рдЗрдБрд▓рд╛рдИ рдлрд░рдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЪрд╛рд╣рд┐рдиреНрдЫред

рдЪрдХреНрд░рдорд╛ рдХреНрдпрд╛рд╕ рдПрд░реЗрдХреЛ рд▓рдореНрдмрд╛рдЗ

рд╕рд╛рдЗрдХрд▓рд╣рд░реВ

рдЬрдм рддрдкрд╛рдЗрдБ loops рдХреЛ рд▓рд╛рдЧреА рд╕рд┐рдХреНрдиреБрд╣реБрдиреНрдЫ, рддрдкрд╛рдЗрдБ рдорд╛рдирдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдкрд╛рд▓рдирд╛ рдЧрд░реНрдиреБрд╣реБрдиреНрдЫ:

for (let i = 0; i < array.length; i++){
  console.log(i);
}

рдпрджреНрдпрдкрд┐, рдпреЛ рд╕рд┐рдиреНрдЯреНрдпрд╛рдХреНрд╕рдХреЛ рд╕рд╛рде, for loop рд▓реЗ рдкреНрд░рддреНрдпреЗрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдПрд░реЗрдХреЛ рд▓рдореНрдмрд╛рдЗ рдмрд╛рд░рдореНрдмрд╛рд░ рдЬрд╛рдБрдЪ рдЧрд░реНрджрдЫред

рдХрд╣рд┐рд▓реЗрдХрд╛рд╣реАрдБ рдпреЛ рдЙрдкрдпреЛрдЧреА рд╣реБрди рд╕рдХреНрдЫ, рддрд░ рдзреЗрд░реИрдЬрд╕реЛ рдЕрд╡рд╕реНрдерд╛рдорд╛ рдпреЛ рдПрд░реЗрдХреЛ рд▓рдореНрдмрд╛рдЗ рдХреНрдпрд╛рд╕ рдЧрд░реНрди рдЕрдзрд┐рдХ рдХреБрд╢рд▓ рд╣реБрдиреНрдЫ, рдЬрд╕рд▓рд╛рдИ рдпрд╕рдорд╛ рдПрдХ рдкрд╣реБрдБрдЪ рдЖрд╡рд╢реНрдпрдХ рдкрд░реНрджрдЫред рд╣рд╛рдореА рдпреЛ рд▓рдореНрдмрд╛рдИ рдЪрд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЧрд░реЗрд░ рдЧрд░реНрди рд╕рдХреНрдЫреМрдВ рдЬрд╣рд╛рдБ рд╣рд╛рдореА рдЪрд░ i рд▓рд╛рдИ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЧрд░реНрдЫреМрдВ, рдЬрд╕реНрддреИ:

for (let i = 0, length = array.length; i < length; i++){
  console.log(i);
}

рд╕рд┐рджреНрдзрд╛рдиреНрддрдорд╛, рд▓рдЧрднрдЧ рдорд╛рдерд┐рдХреЛ рдЬрд╕реНрддреИ, рддрд░ рд▓реБрдк рд╕рд╛рдЗрдЬ рдмрдврд╛рдПрд░ рд╣рд╛рдореАрд▓реЗ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рд╕рдордп рдмрдЪрдд рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдиреЗрдЫреМрдВред

рд╕рд░реНрдЯ рд╕рд░реНрдХрд┐рдЯ рд░реЗрдЯрд┐рдВрдЧ (McCarthy рд░реЗрдЯрд┐рдВрдЧ)

рд╕рд╢рд░реНрдд рдЕрдкрд░реЗрдЯрд░рд╣рд░реВ

рдЯрд░реНрдирд░реА рдЕрдкрд░реЗрдЯрд░ рд╕рд░рд▓ (рд░ рдХрд╣рд┐рд▓реЗрдХрд╛рд╣реАрдБ рддреНрдпрддрд┐ рд╕рд░рд▓ рдЫреИрди) рд╕рд╢рд░реНрдд рдХрдердирд╣рд░реВ рд▓реЗрдЦреНрдирдХреЛ рд▓рд╛рдЧрд┐ рджреНрд░реБрдд рд░ рдкреНрд░рднрд╛рд╡рдХрд╛рд░реА рддрд░рд┐рдХрд╛ рд╣реЛ:

x> 100? "100 рднрдиреНрджрд╛ рдмрдвреА": "100 рднрдиреНрджрд╛ рдХрдо";
x> 100? (x>200? "200 рднрдиреНрджрд╛ рдмрдвреА": "100-200 рдмреАрдЪ"): "100 рднрдиреНрджрд╛ рдХрдо";

рддрд░ рдХрд╣рд┐рд▓реЗрдХрд╛рд╣реАрдБ рдЯрд░реНрдирд░реА рдЕрдкрд░реЗрдЯрд░ рдкрдирд┐ рдЖрд╡рд╢реНрдпрдХ рднрдиреНрджрд╛ рдмрдвреА рдЬрдЯрд┐рд▓ рдЫред рд╣рд╛рдореА рдпрд╕рдХреЛ рд╕рдЯреНрдЯрд╛ 'рд░' && рд░ 'рд╡рд╛' рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдЫреМрдВ || рдмреВрд▓рд┐рдпрди рдЕрдкрд░реЗрдЯрд░рд╣рд░реВ рдЕрдЭ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд░реВрдкрдорд╛ рдирд┐рд╢реНрдЪрд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рд╣рд░реВрдХреЛ рдореВрд▓реНрдпрд╛рдЩреНрдХрди рдЧрд░реНрдиред рдпрд╕рд▓рд╛рдИ рдкреНрд░рд╛рдпрдГ "рд╕рд░реНрдЯ рд╕рд░реНрдХрд┐рдЯ" рд╡рд╛ "рд╕рд░реНрдЯ рд╕рд░реНрдХрд┐рдЯ рд░реЗрдЯрд┐рдВрдЧ" рднрдирд┐рдиреНрдЫред

рдпреЛ рдХрд╕рд░реА рдХрд╛рдо рдЧрд░реНрдЫ

рдорд╛рдиреМрдВ рд╣рд╛рдореА рджреБрдИ рд╡рд╛ рдмрдвреА рд╕рд░реНрддрд╣рд░реВ рдордзреНрдпреЗ рдПрдЙрдЯрд╛ рдорд╛рддреНрд░ рдлрд░реНрдХрд╛рдЙрди рдЪрд╛рд╣рдиреНрдЫреМрдВред

&& рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрд╛ рдкрд╣рд┐рд▓реЛ рдЧрд▓рдд рдорд╛рди рдлрд░реНрдХрд╛рдЙрдиреЗрдЫред рдпрджрд┐ рдкреНрд░рддреНрдпреЗрдХ рдЕрдкрд░реЗрдиреНрдбрд▓реЗ рд╕рддреНрдпрдорд╛ рдореВрд▓реНрдпрд╛рдЩреНрдХрди рдЧрд░реНрдЫ рднрдиреЗ, рдореВрд▓реНрдпрд╛рдЩреНрдХрди рдЧрд░рд┐рдПрдХреЛ рдЕрдиреНрддрд┐рдо рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдлрд┐рд░реНрддрд╛ рдЧрд░рд┐рдиреЗрдЫред

let one = 1, two = 2, three = 3;
console.log(one && two && three); // Result: 3
 
console.log(0 && null); // Result: 0

рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджреИ || рдкрд╣рд┐рд▓реЛ рд╕рд╛рдБрдЪреЛ рдорд╛рди рдлрд┐рд░реНрддрд╛ рдЧрд░реНрдиреЗрдЫред рдпрджрд┐ рдкреНрд░рддреНрдпреЗрдХ рдЕрдкрд░реЗрдиреНрдбрд▓реЗ рдЧрд▓рдд рдореВрд▓реНрдпрд╛рдЩреНрдХрди рдЧрд░реНрдЫ рднрдиреЗ, рдЕрдиреНрддрд┐рдо рдореВрд▓реНрдпрд╛рдЩреНрдХрди рдЧрд░рд┐рдПрдХреЛ рдорд╛рди рдлрд┐рд░реНрддрд╛ рдЧрд░рд┐рдиреЗрдЫред

let one = 1, two = 2, three = 3;
console.log(one || two || three); // Result: 1
 
console.log(0 || null); // Result: null

рдЙрджрд╛рд╣рд░рдгрдХрд╛ 1

рдорд╛рдиреМрдВ рд╣рд╛рдореА рдЪрд░рдХреЛ рд▓рдореНрдмрд╛рдЗ рдлрд░реНрдХрд╛рдЙрди рдЪрд╛рд╣рдиреНрдЫреМрдВ, рддрд░ рд╣рд╛рдореАрд▓рд╛рдИ рдпрд╕рдХреЛ рдкреНрд░рдХрд╛рд░ рдерд╛рд╣рд╛ рдЫреИрдиред

рдпрд╕ рдЕрд╡рд╕реНрдерд╛рдорд╛, рддрдкрд╛рдИрдВрд▓реЗ foo рд╕рд╣реА рдкреНрд░рдХрд╛рд░рдХреЛ рдЬрд╛рдБрдЪ рдЧрд░реНрди if/else рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рддрд░ рдпреЛ рд╡рд┐рдзрд┐ рдзреЗрд░реИ рд▓рд╛рдореЛ рд╣реБрди рд╕рдХреНрдЫред рддреНрдпрд╕реИрд▓реЗ, рдпреЛ рд╣рд╛рдореНрд░реЛ "рд╕рд░реНрдЯ рд╕рд░реНрдХрд┐рдЯ" рд▓рд┐рдиреБ рд░рд╛рдореНрд░реЛ рдЫред

return (foo || []).length;

рдпрджрд┐ рдЪрд░ foo рд╕рдБрдЧ рдЙрдкрдпреБрдХреНрдд рд▓рдореНрдмрд╛рдЗ рдЫ рднрдиреЗ, рддреНрдпреЛ рдлрд┐рд░реНрддрд╛ рдЧрд░рд┐рдиреЗрдЫред рдЕрдиреНрдпрдерд╛ рд╣рд╛рдореАрд▓реЗ реж рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдиреЗрдЫреМрдВред

рдЙрджрд╛рд╣рд░рдгрдХрд╛ 2

рдХреЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдиреЗрд╕реНрдЯреЗрдб рд╡рд╕реНрддреБ рдкрд╣реБрдБрдЪ рдЧрд░реНрди рд╕рдорд╕реНрдпрд╛ рднрдПрдХреЛ рдЫ? рддрдкрд╛рдИрд▓рд╛рдИ рдерд╛рд╣рд╛ рдирд╣реБрди рд╕рдХреНрдЫ рдХрд┐ рдХреБрдиреИ рд╡рд╕реНрддреБ рд╡рд╛ рдпрд╕рдХреЛ рдЙрдкрдЧреБрдгрд╣рд░реВ рдордзреНрдпреЗ рдПрдХ рдЕрд╡рд╕реНрдерд┐рдд рдЫ, рд░ рдпрд╕рд▓реЗ рд╕рдорд╕реНрдпрд╛ рдирд┐рдореНрддреНрдпрд╛рдЙрди рд╕рдХреНрдЫред

рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рд╣рд╛рдореА рдпреЛ рд░рд╛рдЬреНрдпрдорд╛ рдбрд╛рдЯрд╛ рдЧреБрдг рдкрд╣реБрдБрдЪ рдЧрд░реНрди рдЪрд╛рд╣рдиреНрдереНрдпреМрдВ, рддрд░ рд╣рд╛рдореНрд░реЛ рдХрд╛рд░реНрдпрдХреНрд░рдорд▓реЗ рдлреЗрдЪ рдЕрдиреБрд░реЛрдз рдлрд┐рд░реНрддрд╛ рдирдЧрд░реЗрд╕рдореНрдо рдбреЗрдЯрд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реБрдБрджреИрдиред

рд╣рд╛рдореАрд▓реЗ рдпрд╕рд▓рд╛рдИ рдХрд╣рд╛рдБ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдЫреМрдВ рднрдиреНрдиреЗ рдЖрдзрд╛рд░рдорд╛, this.state.data рд▓рд╛рдИ рдХрд▓ рдЧрд░реНрджрд╛ рдПрдк рд╕реБрд░реБ рд╣реБрдирдмрд╛рдЯ рд░реЛрдХреНрди рд╕рдХреНрдЫред рд╕рдорд╕реНрдпрд╛ рд╕рдорд╛рдзрд╛рди рдЧрд░реНрди, рд╣рд╛рдореА рдпрд╕рд▓рд╛рдИ рд╕рд╢рд░реНрдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдорд╛ рд▓рдкреЗрдЯреНрди рд╕рдХреНрдЫреМрдВ:

if (this.state.data) {
  return this.state.data;
} else {
  return 'Fetching Data';
}

рдПрдХ рд░рд╛рдореНрд░реЛ рд╡рд┐рдХрд▓реНрдк "рд╡рд╛" рдЕрдкрд░реЗрдЯрд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╣реБрдиреЗрдЫред

return (this.state.data || 'Fetching Data');

рд╣рд╛рдореА && рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рдорд╛рдерд┐рдХреЛ рдХреЛрдб рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрди рд╕рдХреНрджреИрдиреМрдВред 'рдбреЗрдЯрд╛ рд▓реНрдпрд╛рдЙрдБрджреИ' && this.state.data рдЕрдкрд░реЗрдЯрд░рд▓реЗ this.state.data рдлрд┐рд░реНрддрд╛ рдЧрд░реНрдиреЗрдЫ рдЪрд╛рд╣реЗ рдпреЛ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдЫ рд╡рд╛ рдЫреИрдиред

рд╡реИрдХрд▓реНрдкрд┐рдХ рдЪреЗрди

рд░реВрдЦ рд╕рдВрд░рдЪрдирд╛рдорд╛ рдЧрд╣рд┐рд░реЛ рд╕рдореНрдкрддреНрддрд┐ рдлрд┐рд░реНрддрд╛ рдЧрд░реНрдиреЗ рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрджрд╛ рдХрд╕реИрд▓реЗ рд╡реИрдХрд▓реНрдкрд┐рдХ рдЪреЗрдирд┐рдЩ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕реБрдЭрд╛рд╡ рджрд┐рди рд╕рдХреНрдЫред рддреНрдпрд╕реЛрднрдП, рдкреНрд░рд╢реНрди рдЪрд┐рдиреНрд╣ рдЪрд┐рдиреНрд╣? рдпреЛ рд╢реВрдиреНрдп рдирднрдПрдХреЛ рдЦрдгреНрдбрдорд╛ рдорд╛рддреНрд░ рд╕рдореНрдкрддреНрддрд┐ рдкреБрди: рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред

рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рд╣рд╛рдореА рдпреЛ.state.data?...() рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рдорд╛рдерд┐рдХреЛ рдЙрджрд╛рд╣рд░рдгрд▓рд╛рдИ рд░рд┐рдлреНрдпрд╛рдХреНрдЯрд░ рдЧрд░реНрди рд╕рдХреНрдЫреМрдВред рддреНрдпреЛ рд╣реЛ, рдбрд╛рдЯрд╛ рдорд╛рддреНрд░ рдлрд┐рд░реНрддрд╛ рд╣реБрдиреНрдЫ рдпрджрд┐ рдорд╛рди рд╢реВрдиреНрдп рдЫреИрдиред

рд╡рд╛, рдпрджрд┐ рд░рд╛рдЬреНрдп рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЧрд░рд┐рдПрдХреЛ рдЫ рд╡рд╛ рдЫреИрди рднрдиреНрдиреЗ рдХреБрд░рд╛рд▓реЗ рдлрд░рдХ рдкрд╛рд░реНрдЫ рднрдиреЗ, рд╣рд╛рдореА рдпреЛ. рд░рд╛рдЬреНрдп?. рдбрд╛рдЯрд╛ рдлрд┐рд░реНрддрд╛ рдЧрд░реНрди рд╕рдХреНрдЫреМрдВред

рдмреБрд▓рд┐рдпрдирдорд╛ рд░реВрдкрд╛рдиреНрддрд░рдг рдЧрд░реНрдиреБрд╣реЛрд╕реН

рдкреНрд░рдХрд╛рд░ рд░реВрдкрд╛рдиреНрддрд░рдг

рд╕рд╛рдорд╛рдиреНрдп рдмреБрд▓рд┐рдпрди рдкреНрд░рдХрд╛рд░реНрдпрд╣рд░реВ рд╕рд╛рдБрдЪреЛ рд░ рдЧрд▓рддрдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд, рдЬрд╛рднрд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯрд▓реЗ рдЕрдиреНрдп рд╕рдмреИ рдорд╛рдирд╣рд░реВрд▓рд╛рдИ рд╕рддреНрдп рд╡рд╛ рдЧрд▓рдд рдорд╛рдиреНрджрдЫред

рдЕрдиреНрдпрдерд╛ рдиреЛрдЯ рдирдЧрд░реЗрд╕рдореНрдо, рдЬрд╛рднрд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯрдорд╛ рд╕рдмреИ рдорд╛рдирд╣рд░реВ рд╕рддреНрдп рд╣реБрдиреН, реж, "", рд╢реВрдиреНрдп, рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд, NaN рд░, рдЕрд╡рд╢реНрдп рдкрдирд┐, рдЧрд▓рддред рдкрдЫрд┐рд▓реНрд▓реЛ рдЭреВрдЯрд╛ рдЫрдиреНред

рд╣рд╛рдореА рд╕рдЬрд┐рд▓реИрд╕рдБрдЧ ! рдЕрдкрд░реЗрдЯрд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рджреБрдИ рдмреАрдЪ рд╕реНрд╡рд┐рдЪ рдЧрд░реНрди рд╕рдХреНрдЫреМрдВ, рдЬрд╕рд▓реЗ рдкреНрд░рдХрд╛рд░рд▓рд╛рдИ рдмреБрд▓рд┐рдпрдирдорд╛ рд░реВрдкрд╛рдиреНрддрд░рдг рдЧрд░реНрджрдЫред

const isTrue  = !0;
const isFalse = !1;
const alsoFalse = !!0;
 
console.log(true); // Result: true
console.log(typeof true); // Result: "boolean"

рд╕реНрдЯреНрд░рд┐рдЩрдорд╛ рд░реВрдкрд╛рдиреНрддрд░рдг рдЧрд░реНрдиреБрд╣реЛрд╕реН

рдкреНрд░рдХрд╛рд░ рд░реВрдкрд╛рдиреНрддрд░рдг

рдкреВрд░реНрдгрд╛рдВрдХрдмрд╛рдЯ рд╕реНрдЯреНрд░рд┐рдЩрдорд╛ рджреНрд░реБрдд рд░реВрдкрд╛рдиреНрддрд░рдг рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред

const val = 1 + "";
 
console.log(val); // Result: "1"
console.log(typeof val); // Result: "string"

рдкреВрд░реНрдгрд╛рдВрдХрдорд╛ рд░реВрдкрд╛рдиреНрддрд░рдг рдЧрд░реНрдиреБрд╣реЛрд╕реН

рдкреНрд░рдХрд╛рд░ рд░реВрдкрд╛рдиреНрддрд░рдг

рд╣рд╛рдореА рдпрд╕рд░реА рдЙрд▓реНрдЯреЛ рд░реВрдкрд╛рдиреНрддрд░рдг рдЧрд░реНрдЫреМрдВред

let int = "15";
int = +int;
 
console.log(int); // Result: 15
console.log(typeof int); Result: "number"

рдпреЛ рд╡рд┐рдзрд┐ рдкрдирд┐ рдмреБрд▓рд┐рдпрди рдбрд╛рдЯрд╛ рдкреНрд░рдХрд╛рд░рд▓рд╛рдИ рдирд┐рдпрдорд┐рдд рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдорд╛рдирд╣рд░реВрдорд╛ рд░реВрдкрд╛рдиреНрддрд░рдг рдЧрд░реНрди рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ, рдЬрд╕реНрддреИ рддрд▓ рджреЗрдЦрд╛рдЗрдПрдХреЛ рдЫ:

console.log(+true);  // Return: 1
console.log(+false); // Return: 0

рддреНрдпрд╣рд╛рдБ рдкрд░рд┐рд╕реНрдерд┐рддрд┐рд╣рд░реВ рд╣реБрди рд╕рдХреНрдЫрдиреН рдЬрд╣рд╛рдБ + рд▓рд╛рдИ рдердк рдЕрдкрд░реЗрдЯрд░рдХреЛ рд╕рдЯреНрдЯрд╛ рдХрдиреНрдЯреЗрдиреЗрд╕рди рдЕрдкрд░реЗрдЯрд░рдХреЛ рд░реВрдкрдорд╛ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдЧрд░рд┐рдиреЗрдЫред рдпрд╕рдмрд╛рдЯ рдмрдЪреНрдирдХреЛ рд▓рд╛рдЧрд┐, рддрдкрд╛рдИрдВрд▓реЗ рдЯрд┐рд▓реНрдбрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрдкрд░реНрдЫ: ~~ред рдпреЛ рдЕрдкрд░реЗрдЯрд░ -n-1 рдХреЛ рдмрд░рд╛рдмрд░ рдЫред рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, ~15 рдмрд░рд╛рдмрд░ -16 рд╣реЛред

рдкрдЩреНрдХреНрддрд┐рдорд╛ рджреБрдИ рдЯрд┐рд▓реНрдбрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрд╛ рдЕрдкрд░реЗрд╢рдирд▓рд╛рдИ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдЧрд░реНрджрдЫ рдХрд┐рдирднрдиреЗ - (- - n - 1) - 1 = n + 1 - 1 = nред рдЕрд░реНрдХреЛ рд╢рдмреНрджрдорд╛, ~-16 рдмрд░рд╛рдмрд░ 15 рд╣реЛред

const int = ~~"15"
console.log(int); // Result: 15
console.log(typeof int); Result: "number"

<Quick Powers

рд╕рдВрдЪрд╛рд▓рди

ES7 рдорд╛ рд╕реБрд░реБ рдЧрд░реНрджреИ, рддрдкрд╛рдИрд▓реЗ рдПрдХреНрд╕рдкреЛрдиреЗрд╢рди рдЕрдкрд░реЗрдЯрд░ ** рд▓рд╛рдИ рд╢рдХреНрддрд┐рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд░реВрдкрдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рдпреЛ Math.pow (2, 3) рдХреЛ рдкреНрд░рдпреЛрдЧ рднрдиреНрджрд╛ рдзреЗрд░реИ рдЫрд┐рдЯреЛ рдЫред рдпреЛ рд╕рд░рд▓ рджреЗрдЦрд┐рдиреНрдЫ, рддрд░ рдпреЛ рдмрд┐рдиреНрджреБ рдкреНрд░рд╡рд┐рдзрд┐рд╣рд░реВрдХреЛ рд╕реВрдЪреАрдорд╛ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░рд┐рдПрдХреЛ рдЫ, рдХрд┐рдирдХрд┐ рдпреЛ рд╕рдмреИ рдард╛рдЙрдБрдорд╛ рдЙрд▓реНрд▓реЗрдЦ рдЧрд░рд┐рдПрдХреЛ рдЫреИрдиред

console.log(2 ** 3); // Result: 8

рдпрд╕рд▓рд╛рдИ ^ рдкреНрд░рддреАрдХрд╕рдБрдЧ рднреНрд░рдорд┐рдд рдЧрд░реНрдиреБ рд╣реБрдБрджреИрди, рдЬреБрди рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛ рдШрд╛рддрд╛рдВрдХрдХреЛ рд▓рд╛рдЧрд┐ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫред рддрд░ JavaScript рдорд╛ рдпреЛ XOR рдЕрдкрд░реЗрдЯрд░ рд╣реЛред

ES7 рдЕрдШрд┐, ** рд╕рд░реНрдЯрдХрдЯ рдмрд┐рдЯрд╡рд╛рдЗрдЬ рдмрд╛рдпрд╛рдБ рд╕рд┐рдлреНрдЯ рдЕрдкрд░реЗрдЯрд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдЖрдзрд╛рд░ реи рдХреЛ рд╢рдХреНрддрд┐рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдорд╛рддреНрд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдереНрдпреЛ <<:

Math.pow(2, n);
2 << (n - 1);
2**n;

рдЙрджрд╛рд╣рд░рдг рдХреЛ рд▓рд╛рдЧреА, 2 << 3 = 16 2 ** 4 = 16 рдХреЛ рдмрд░рд╛рдмрд░ рдЫред

рдкреВрд░реНрдгрд╛рдВрдХрдорд╛ рдлреНрд▓реЛрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реН

рд╕рдЮреНрдЪрд╛рд▓рди / рдкреНрд░рдХрд╛рд░ рд░реВрдкрд╛рдиреНрддрд░рдг

рдпрджрд┐ рддрдкрд╛рдЗрдБ рдлреНрд▓реЛрдЯрд▓рд╛рдИ рдкреВрд░реНрдгрд╛рдВрдХрдорд╛ рд░реВрдкрд╛рдиреНрддрд░рдг рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ рднрдиреЗ, рддрдкрд╛рдЗрдБ Math.floor(), Math.ceil() рд╡рд╛ Math.round() рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рддрд░ рддреНрдпрд╣рд╛рдБ рдЫрд┐рдЯреЛ рдмрд╛рдЯреЛ рдЫ, рдпрд╕рдХреЛ рд▓рд╛рдЧрд┐ рд╣рд╛рдореА |, рддреНрдпреЛ рд╣реЛ, OR рдЕрдкрд░реЗрдЯрд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдЫреМрдВред

console.log(23.9 | 0);  // Result: 23
console.log(-23.9 | 0); // Result: -23

рд╡реНрдпрд╡рд╣рд╛рд░ | рдпреЛ рдзреЗрд░реИ рд╣рджрд╕рдореНрдо рдирд┐рд░реНрднрд░ рдЧрд░реНрджрдЫ рдХрд┐ рддрдкрд╛рдИрдВ рд╕рдХрд╛рд░рд╛рддреНрдордХ рд╡рд╛ рдирдХрд╛рд░рд╛рддреНрдордХ рд╕рдВрдЦреНрдпрд╛рд╣рд░реВрд╕рдБрдЧ рд╡реНрдпрд╡рд╣рд╛рд░ рдЧрд░реНрджреИ рд╣реБрдиреБрд╣реБрдиреНрдЫ, рддреНрдпрд╕реИрд▓реЗ рдпреЛ рд╡рд┐рдзрд┐ рдорд╛рддреНрд░ рдЙрдкрдпреБрдХреНрдд рдЫ рдпрджрд┐ рддрдкрд╛рдИрдВ рдХреЗ рдЧрд░реНрджреИ рд╣реБрдиреБрд╣реБрдиреНрдЫ рднрдиреНрдиреЗрдорд╛ рд╡рд┐рд╢реНрд╡рд╕реНрдд рд╣реБрдиреБрд╣реБрдиреНрдЫред

n | реж рд▓реЗ рджрд╢рдорд▓рд╡ рд╡рд┐рднрд╛рдЬрдХ рдкрдЫрд┐ рд╕рдмреИ рдХреБрд░рд╛ рд╣рдЯрд╛рдЙрдБрдЫ, рдлреНрд▓реЛрдЯрд▓рд╛рдИ рдкреВрд░реНрдгрд╛рдВрдХрдорд╛ рдХрд╛рдЯреНрджреИред

рддрдкрд╛рдИрдВрд▓реЗ ~~ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд╕рдорд╛рди рд░рд╛рдЙрдиреНрдбрд┐рдЩ рдкреНрд░рднрд╛рд╡ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рдкреВрд░реНрдгрд╛рдВрдХрдорд╛ рдЬрдмрд░рдЬрд╕реНрддреА рд░реВрдкрд╛рдиреНрддрд░рдг рдЧрд░реЗрдкрдЫрд┐, рдорд╛рди рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рд░рд╣рдиреНрдЫред

рдкрдЫрд┐рд▓реНрд▓реЛ рдирдореНрдмрд░рд╣рд░реВ рд╣рдЯрд╛рдЙрдБрджреИ

OR рдЕрдкрд░реЗрдЯрд░ рдирдореНрдмрд░рдмрд╛рдЯ рдХреБрдиреИ рдкрдирд┐ рдЕрдВрдХрд╣рд░реВ рд╣рдЯрд╛рдЙрди рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред рдпрд╕рдХреЛ рдорддрд▓рдм рд╣рд╛рдореАрд▓реЗ рдпрд╣рд╛рдБ рдЬрд╕реНрддреИ рдкреНрд░рдХрд╛рд░рд╣рд░реВ рд░реВрдкрд╛рдиреНрддрд░рдг рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫреИрди:

let str = "1553";
Number(str.substring(0, str.length - 1));

рдмрд░реБ рд╣рд╛рдореА рдХреЗрд╡рд▓ рд▓реЗрдЦреНрдЫреМрдВ:

console.log(1553 / 10   | 0)  // Result: 155
console.log(1553 / 100  | 0)  // Result: 15
console.log(1553 / 1000 | 0)  // Result: 1

рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд▓рд┐рдЩреНрдХрд┐рдЩ

рдХрдХреНрд╖рд╛рд╣рд░реВ

ES6 рддреАрд░ рдиреЛрдЯреЗрд╢рдирд╣рд░реВ рд╡рд░реНрдЧ рд╡рд┐рдзрд┐рд╣рд░реВрдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ, рд░ рдмрд╛рдЗрдиреНрдбрд┐рдЩ рдирд┐рд╣рд┐рдд рдЫред рдпрд╕рдХреЛ рдорддрд▓рдм рдпреЛ рд╣реЛ рдХрд┐ рддрдкрд╛рдИрдВрд▓реЗ рдпреЛ рдЬрд╕реНрддреИ рджреЛрд╣реЛрд░рд┐рдиреЗ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рд╣рд░реВрд▓рд╛рдИ рдЕрд▓рд╡рд┐рджрд╛ рднрдиреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫредmyMethod = this.myMethod.bind(this)!

import React, { Component } from React;
 
export default class App extends Compononent {
  constructor(props) {
  super(props);
  this.state = {};
  }
 
myMethod = () => {
    // This method is bound implicitly!
  }
 
render() {
    return (
      <>
        <div>
          {this.myMethod()}
        </div>
      </>
    )
  }
};

рдПрд░реЗ рдЯреНрд░рд┐рдорд┐рдЩ

ARRAYS

рдпрджрд┐ рддрдкрд╛рдЗрдБ рдПрд░реНрд░реЗрдмрд╛рдЯ рдорд╛рдирд╣рд░реВ рд╕реНрдЯреНрд░рд┐рдк рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ рднрдиреЗ, рддреНрдпрд╣рд╛рдБ splice() рднрдиреНрджрд╛ рдЫрд┐рдЯреЛ рд╡рд┐рдзрд┐рд╣рд░реВ рдЫрдиреНред

рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдпрджрд┐ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдореВрд▓ рдПрд░реЗрдХреЛ рд╕рд╛рдЗрдЬ рдерд╛рд╣рд╛ рдЫ рднрдиреЗ, рддрдкрд╛рдИрдВрд▓реЗ рдпрд╕рдХреЛ рд▓рдореНрдмрд╛рдЗ рдЧреБрдгрд▓рд╛рдИ рдирд┐рдореНрди рд░реВрдкрдорд╛ рдУрднрд░рд░рд╛рдЗрдб рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ:

let array = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
array.length = 4;
 
console.log(array); // Result: [0, 1, 2, 3]

рддрд░ рддреНрдпрд╣рд╛рдБ рдЕрд░реНрдХреЛ рд╡рд┐рдзрд┐ рдЫ, рд░ рдПрдХ рдЫрд┐рдЯреЛред рдпрджрд┐ рдЧрддрд┐ рддрдкрд╛рдИрдВрдХреЛ рд▓рд╛рдЧрд┐ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдЫ рднрдиреЗ, рдпрд╣рд╛рдБ рд╣рд╛рдореНрд░рд╛ рдЫрдиреМрдЯрд╣рд░реВ рдЫрдиреН:

let array = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
array = array.slice(0, 4);
 
console.log(array); // Result: [0, 1, 2, 3]

рдПрд░реЗрдХреЛ рдЕрдиреНрддрд┐рдо рдорд╛рди(рд╣рд░реВ) рдкреНрд░рд┐рдиреНрдЯ рдЧрд░реНрджреИ

ARRAYS
рдпреЛ рдкреНрд░рд╡рд┐рдзрд┐рд▓рд╛рдИ рд╕реНрд▓рд╛рдЗрд╕() рд╡рд┐рдзрд┐рдХреЛ рдкреНрд░рдпреЛрдЧ рдЖрд╡рд╢реНрдпрдХ рдЫред

let array = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
 
console.log(array.slice(-1)); // Result: [9]
console.log(array.slice(-2)); // Result: [8, 9]
console.log(array.slice(-3)); // Result: [7, 8, 9]

JSON рдХреЛрдб рдврд╛рдБрдЪрд╛

JSON

рддрдкрд╛рдИрдВрд▓реЗ рдкрд╣рд┐рд▓реЗ рдиреИ JSON.stringify рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рд╕рдХреНрдиреБрднрдПрдХреЛ рд╣реБрдирд╕рдХреНрдЫред рдХреЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдерд╛рд╣рд╛ рдЫ рдХрд┐ рдпрд╕рд▓реЗ рддрдкрд╛рдИрдВрдХреЛ JSON рдврд╛рдБрдЪрд╛рдорд╛ рдорджреНрджрдд рдЧрд░реНрджрдЫ?

stringify() рд╡рд┐рдзрд┐рд▓реЗ рджреБрдИ рд╡реИрдХрд▓реНрдкрд┐рдХ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВ рд▓рд┐рдиреНрдЫ: рдПрдХ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдкреНрд░рдХрд╛рд░реНрдп, рдЬреБрди JSON рдкреНрд░рджрд░реНрд╢рд┐рдд рдлрд┐рд▓реНрдЯрд░ рдЧрд░реНрди рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ, рд░ рд╕реНрдкреЗрд╕ рдорд╛рдиред

console.log(JSON.stringify({ alpha: 'A', beta: 'B' }, null, 't'));
 
// Result:
// '{
//     "alpha": A,
//     "beta": B
// }'

рдпреЛ рд╕рдмреИ рд╣реЛ, рдорд▓рд╛рдИ рдЖрд╢рд╛ рдЫ рдХрд┐ рдпреА рд╕рдмреИ рдкреНрд░рд╡рд┐рдзрд┐рд╣рд░реВ рдЙрдкрдпреЛрдЧреА рдерд┐рдПред рддрдкрд╛рдИрд▓рд╛рдИ рдХреБрди рдЪрд╛рд▓рд╣рд░реВ рдерд╛рд╣рд╛ рдЫ? рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдЯрд┐рдкреНрдкрдгреАрд╣рд░реВрдорд╛ рд▓реЗрдЦреНрдиреБрд╣реЛрд╕реНред

Skillbox рд╕рд┐рдлрд╛рд░рд┐рд╕ рдЧрд░реНрджрдЫ:

рд╕реНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди