ECMAScript 6 (ES-2015) рдХрд╛ рдкрд░рд┐рдЪрдп

рдИрдПрд╕ 6 рдХрд╛ рдкрд░рд┐рдЪрдп



рд╕рд╛рдордЧреНрд░реА рдХреА рддрд╛рд▓рд┐рдХрд╛
1. рдЯреЗрдореНрдкрд▓реЗрдЯ рд╢рд╛рдмреНрджрд┐рдХ
2. рд▓реЗрдЯ рдФрд░ рдХрд╛рд╕реНрдЯ
3. рдПрд░реЛ рдлрдВрдХреНрд╢рди рдПрдХреНрд╕рдкреНрд░реЗрд╢рди
4. рдХреЗ рд▓рд┐рдП
5. рдЧрдгрдирд╛ рдХреА рдЧрдИ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдирд╛рдо
6. рдСрдмреНрдЬреЗрдХреНрдЯ.рд╕рд╛рдЗрди ()
рдмрд╛рдХреА рдкреИрд░рд╛рдореАрдЯрд░
8. рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкреИрд░рд╛рдореАрдЯрд░
9. рд╡рд┐рдирд╛рд╢рдХрд╛рд░реА рдХрд╛рд░реНрдп
10. рдирдХреНрд╢рд╛
11. рд╕реЗрдЯ рдХрд░реЗрдВ
12. рдХрдХреНрд╖рд╛рдПрдВ
13. рд╡рд╛рджрд╛
14. Iterators
15. рдЬрдирдХ
16. рд╕реБрдВрдмреЛрд▓

рдЯреЗрдореНрдкрд▓реЗрдЯ рд╢рд╛рдмреНрджрд┐рдХ (рдЯреЗрдореНрдкрд▓реЗрдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕)


рдЯреЗрдореНрдкреНрд▓реЗрдЯ рд╢рд╛рдмреНрджрд┐рдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╢рд╛рдмреНрджрд┐рдХ рд╣реИрдВ рдЬреЛ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рдЕрдВрджрд░ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред рдЙрдирдХреЗ рд╕рд╛рде рдЖрдк рдмрд╣реБрд╕реНрддрд░реАрдп рд╢рд╛рдмреНрджрд┐рдХ рдФрд░ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рдХреНрд╖реЗрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЯреЗрдореНрдкрд▓реЗрдЯ рд╢рд╛рдмреНрджрд┐рдХ рдбрдмрд▓ рдпрд╛ рд╕рд┐рдВрдЧрд▓ рдХреЗ рдмрдЬрд╛рдп рдмреИрдХрдЯрд┐рдХреНрд╕ (``) рдореЗрдВ рд╕рдВрд▓рдЧреНрди рд╣реИрдВред рд╡реЗ рдПрдХ рдбреЙрд▓рд░ рдЪрд┐рд╣реНрди рдФрд░ рдШреБрдВрдШрд░рд╛рд▓реЗ рдмреНрд░реЗрд╕рд┐рдЬрд╝ ($ {рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐}) рджреНрд╡рд╛рд░рд╛ рдЪрд┐рд╣реНрдирд┐рдд рд╡рд╛рдЗрд▓реНрдбрдХрд╛рд░реНрдб рд╢рд╛рдорд┐рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпрд╛рдБ рдФрд░ рдЙрдирдХреЗ рдмреАрдЪ рдХрд╛ рдкрд╛рда рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдлрд╝рдВрдХреНрд╢рди рдмрд╕ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рд╕рднреА рднрд╛рдЧреЛрдВ рдХреЛ рдорд┐рд▓рд╛рддрд╛ рд╣реИред рдпрджрд┐ рд░реЗрдЦрд╛ рд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╣реИ (рдпрд╣рд╛рдБ рдпрд╣ рдЯреИрдЧ рд╣реИ), рддреЛ рдЯреЗрдореНрдкрд▓реЗрдЯ рд▓рд╛рдЗрди рдХреЛ "рдЯреИрдЧ рдЯреЗрдореНрдкрд▓реЗрдЯ" рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЯреИрдЧ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ (рдЖрдорддреМрд░ рдкрд░ рдПрдХ рдлрд╝рдВрдХреНрд╢рди) рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдЯреЗрдореНрдкрд▓реЗрдЯ рд╢рд╛рдмреНрджрд┐рдХ рдХреЗ рд╕рд╛рде рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдЖрдк рдЖрдЙрдЯрдкреБрдЯ рд╕реЗ рдкрд╣рд▓реЗ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЯреЗрдореНрдкреНрд▓реЗрдЯ рд╢рд╛рдмреНрджрд┐рдХреЛрдВ рдореЗрдВ рдмреИрдХрд╡реЛрдЯ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдмреИрдХрд╕реНрд▓реИрд╢ \ n рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВред

рдмрд╣реБрднрд╛рд╖реА рд╢рд╛рдмреНрджрд┐рдХ
рдиреНрдпреВрд▓рд╛рдЗрди рд╡рд░реНрдг рд╡рд╛рдЗрд▓реНрдбрдХрд╛рд░реНрдб рд╢рд╛рдмреНрджрд┐рдХ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИрдВред рдирд┐рдпрдорд┐рдд рддрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╕рдореНрдорд┐рд▓рди рд▓рдкреЗрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА:
console.log('string text line 1\n' + 'string text line 2'); // "string text line 1 // string text line 2" 

рдЯреЗрдореНрдкрд▓реЗрдЯ рд╢рд╛рдмреНрджрд┐рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рд╣реА:
 console.log(`string text line 1 string text line 2`); // "string text line 1 // string text line 2" 


рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдЗрдВрдЯрд░рдкреЛрд▓реЗрд╢рди
рдирд┐рдпрдорд┐рдд рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдореЗрдВ рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рдбрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛:
 var a = 5; var b = 10; console.log('Fifteen is ' + (a + b) + ' and not ' + (2 * a + b) + '.'); // "Fifteen is 15 and not 20." 


рдЕрдм, рдЯреЗрдореНрдкреНрд▓реЗрдЯ рд╢рд╛рдмреНрджрд┐рдХ рдХреА рдорджрдж рд╕реЗ, рдЖрдк `рд╕рд┐рдВрдЯреИрдХреНрдЯрд┐рдХ рд╢реБрдЧрд░` рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХреЛ рдЕрдзрд┐рдХ рдкрдардиреАрдп рдмрдирд╛рддрд╛ рд╣реИ:
 var a = 5; var b = 10; console.log(`Fifteen is ${a + b} and not ${2 * a + b}.`); // "Fifteen is 15 and not 20." 


рдиреЗрд╕реНрдЯреЗрдб рдЯреЗрдореНрдкрд▓реЗрдЯ
рдХрдИ рдмрд╛рд░, рдПрдХ рдкреИрдЯрд░реНрди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдмрдирд╛рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЫреЛрдЯрд╛ рдФрд░ рд╢рд╛рдпрдж рдЕрдзрд┐рдХ рдкрдардиреАрдп рддрд░реАрдХрд╛ рд╣реИред рдмрд╕ рдмреИрдХрдХреЛрдЯ рдХрд┐рдП рдЧрдП рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рдЕрдВрджрд░ рдПрдХ рдФрд░ рдбрд╛рд▓ рджрд┐рдпрд╛, рдЙрдиреНрд╣реЗрдВ $ {} рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдореЗрдВ рд▓рдкреЗрдЯрдХрд░ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╕рд╣реА рд╣реИ, рддреЛ рдЖрдк рдПрдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рд╢рд╛рдмреНрджрд┐рдХ рд╡рд╛рдкрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
ES5 рдореЗрдВ:
 var classes = 'header' classes += (isLargeScreen() ? '' : item.isCollapsed ? ' icon-expander' : ' icon-collapser'); 

ES2015 рдореЗрдВ рдиреЗрд╕реНрдЯрд┐рдВрдЧ рдХреЗ рдмрд┐рдирд╛ рдЯреЗрдореНрдкрд▓реЗрдЯ рд╢рд╛рдмреНрджрд┐рдХ рдХреЗ рд╕рд╛рде:
 const classes = `header ${ isLargeScreen() ? '' : (item.isCollapsed ? 'icon-expander' : 'icon-collapser') }`; 

рдиреЗрд╕реНрдЯреЗрдб рдЯреЗрдореНрдкрд▓реЗрдЯ рд╢рд╛рдмреНрджрд┐рдХ рдХреЗ рд╕рд╛рде ES2015 рдореЗрдВ:
 const classes = `header ${ isLargeScreen() ? '' : `icon-${item.isCollapsed ? 'expander' : 'collapser'}` }`; 


рдЯреИрдЧ рдЯреЗрдореНрдкреНрд▓реЗрдЯ
рдЯреЗрдореНрдкреНрд▓реЗрдЯ рд╢рд╛рдмреНрджрд┐рдХреЛрдВ рдХрд╛ рдПрдХ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рд░реВрдк рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдЯреИрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╡реЗ рдЖрдкрдХреЛ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЯреЗрдореНрдкрд▓реЗрдЯ рд╢рд╛рдмреНрджрд┐рдХрддрд╛ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред рдРрд╕реЗ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдкрд╣рд▓реЗ рддрд░реНрдХ рдореЗрдВ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдорд╛рдиреЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рд╣реЛрддреА рд╣реИ, рдФрд░ рдмрд╛рдХреА рдореЗрдВ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рд╕реЗ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╣реЛрддреА рд╣реИред рдирддреАрдЬрддрди, рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЗрдХрдЯреНрдареЗ рд╕реНрдЯреНрд░рд┐рдВрдЧ (рдпрд╛ рдХреБрдЫ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ, рдЬреИрд╕рд╛ рдХрд┐ рдмрд╛рдж рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛) рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдирд╛рдо рдХреБрдЫ рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
 var person = 'Mike'; var age = 28; function myTag(strings, personExp, ageExp) { var str0 = strings[0]; // "That " var str1 = strings[1]; // " is a " // ,     // (  )    , //    (""),    . // var str2 = strings[2]; var ageStr; if (ageExp > 99){ ageStr = 'centenarian'; } else { ageStr = 'youngster'; } //     ,     return `${str0}${personExp}${str1}${ageStr}`; } var output = myTag`That ${ person } is a ${ age }`; console.log(output);// That Mike is a youngster 

рдЯреИрдЧ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИред

рдХрдЪреНрдЪреА рд░реЗрдЦрд╛рдПрдБ
рдЯреИрдЧ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рдкрд╣рд▓реЗ рддрд░реНрдХ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╡рд┐рд╢реЗрд╖ рдХрдЪреНрдЪреА рд╕рдВрдкрддреНрддрд┐, рдЖрдкрдХреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдЙрд╕ рд░реВрдк рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдпрд╣ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреЗ рдмрд┐рдирд╛ рджрд░реНрдЬ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
 function tag(strings) { return strings.raw[0]; } tag`string text line 1 \\n string text line 2`; //  "string text line 1 \\n string text line 2", //  'n'    '\' 

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ String.raw () рдкрджреНрдзрддрд┐ рд╣реИ рдЬреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЯреЗрдореНрдкрд▓реЗрдЯ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рдорд╛рди рд╕реНрд░реЛрдд рд╕реНрдЯреНрд░рд┐рдВрдЧ рд▓реМрдЯрд╛рддреА рд╣реИ рдФрд░ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕рдВрдпреЛрдЬрди рдПрдХ рд╕рд╛рде рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдЧреАред

ECMAScript 2016 рдореЗрдВ, рдЯреИрдЧ рдХрд┐рдП рдЧрдП рдЯреЗрдореНрдкрд▓реЗрдЯ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд░реНрдгреЛрдВ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдпрдореЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреЗ рд╣реИрдВ:
  • рдпреВрдирд┐рдХреЛрдб рд╡рд░реНрдг "\ u" рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, \ u00A9
  • рдпреВрдирд┐рдХреЛрдб рдХреЛрдб рдкреЙрдЗрдВрдЯ "\ u {}" рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, \ u {2F804}
  • рд╣реЗрдХреНрд╕рд╛рдбреЗрд╕рд┐рдорд▓ рдЪрд░рд┐рддреНрд░ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ "\ x" рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, \ xA9
  • "" рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рд╡рд░реНрдгреЛрдВ рдХрд╛ рдЕрд╖реНрдЯрдХ рдирд┐рд░реВрдкрдг, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, \ 251


рдЪрд▓реЛ рдФрд░ рдХрд╛рд╕реНрдЯ


рд▓реЗрдЯ рдФрд░ рдХреЙрдиреНрд╕реНрдЯреЗрдмрд▓ рдХреАрд╡рд░реНрдб рджреНрд╡рд╛рд░рд╛ рдШреЛрд╖рд┐рдд рдЪрд░ рдХрд╛ рджрд╛рдпрд░рд╛ рд╡рд╣ рдмреНрд▓реЙрдХ рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рд╕рднреА рдмреНрд▓реЙрдХ рдХреЗ рдЕрдВрддрд░реНрдЧрдд рдЖрддрд╛ рд╣реИред рдЗрд╕рдореЗрдВ, рд▓реЗрдЯ рдбрд╛рдпрд░реЗрдХреНрдЯрд┐рд╡ рдХрд╛ рд╕рдВрдЪрд╛рд▓рди, рд╡реИрд░ рдбрд╛рдпрд░реЗрдХреНрдЯрд┐рд╡ рдХреЗ рд╕рдорд╛рди рд╣реИред рдореБрдЦреНрдп рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рдЪрд░ рдирд┐рд░реНрджреЗрд╢ рджреНрд╡рд╛рд░рд╛ рдШреЛрд╖рд┐рдд рдЪрд░ рдХрд╛ рджрд╛рдпрд░рд╛ рд╕рдВрдкреВрд░реНрдг рдХрд╛рд░реНрдп рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдпрд╣ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЪрд░реЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЗ рдореВрд▓реНрдп рдХреЛ рдПрдХ рдирдП рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рджреНрд╡рд╛рд░рд╛ рдирд╣реАрдВ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рди рд╣реА рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдХреЙрдиреНрд╕реНрдЯреЗрдмрд▓ рдХреАрд╡рд░реНрдб рдХреЗ рд╕рд╛рде рдПрдХ рд╡реИрд░рд┐рдПрдмрд▓ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╕рдордп, рдЖрдкрдХреЛ рд╕реНрдерд┐рд░рд╛рдВрдХ рдХрд╛ рдорд╛рди рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╡реИрд░рд┐рдПрдмрд▓ рдХреЗ рд╡рд┐рдкрд░реАрдд рд╡реИрд╢реНрд╡рд┐рдХ рд╕реНрдерд┐рд░рд╛рдВрдХ рд╡рд┐рдВрдбреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдЧреБрдг рдирд╣реАрдВ рдмрдирддреЗ рд╣реИрдВред
рдПрдХ рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреА рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдЖрдкрдХреЛ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдПрдХ рдореВрд▓реНрдп рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдШреЛрд╖рдгрд╛ (рдмрд┐рдВрджреБ рдпрд╣ рд╣реИ рдХрд┐ рдлрд┐рд░ рдпрд╣ рдорд╛рди рдЕрдм рдмрджрд▓рд╛ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ)ред
рдХреЙрдиреНрд╕реНрдЯреЗрдмрд▓ рдХреАрд╡рд░реНрдб рдХреЗ рд╕рд╛рде рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХреЛ рдбрд┐рдХреНрд▓реЗрдпрд░ рдХрд░рдиреЗ рд╕реЗ рдПрдХ рд╕реНрдерд┐рд░рд╛рдВрдХ (рдореЗрдореЛрд░реА рдХреЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдПрдХ рдирдпрд╛ рдирд╛рдо рд░реЗрдлрд░реЗрдВрд╕) рдмрдирддрд╛ рд╣реИ рдЬреЛ рдХреЗрд╡рд▓ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реЛрддрд╛ рд╣реИред
рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╕рдВрдХреЗрддрд┐рдд рдореВрд▓реНрдп рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЛ рдЖрд╢реНрд╡рд╕реНрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдХреЛрдИ рд╡рд╕реНрддреБ рдХрд┐рд╕реА рд╕реНрдерд┐рд░ рдмрд┐рдВрджреБ рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рддреА рд╣реИ, рддреЛ рд╡рд╕реНрддреБ рдХреЛ рд╣реА рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЗ рдирд╛рдо рдлрд╝рдВрдХреНрд╢рди рдпрд╛ рд╕рдорд╛рди рджрд╛рдпрд░реЗ рдХреЗ рдЪрд░ рдХреЗ рдирд╛рдореЛрдВ рд╕реЗ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛ рд╕рдХрддреЗ рд╣реИрдВред

рд╡реИрд╢реНрд╡рд┐рдХ рдФрд░ рдмреНрд▓реЙрдХ рджрд╛рдпрд░реЗ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг:
 function myFunction() { if (true) let a = 5; console.log(a); //SyntaxError   a     if if (true) var b = 5; console.log(b); //5   b     } 


рдПрд░реЛ рдлрдВрдХреНрд╢рди рдПрдХреНрд╕рдкреНрд░реЗрд╢рди


рдПрд░реЛ рдлрдВрдХреНрд╢рди рдПрдХреНрд╕рдкреНрд░реЗрд╢рдВрд╕ рдореЗрдВ рдлрдВрдХреНрд╢рдирд▓ рдПрдХреНрд╕рдкреНрд░реЗрд╢рдВрд╕ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЫреЛрдЯрд╛ рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рд▓реЗрдХреНрд╕рд┐рдХ рд░реВрдк рд╕реЗ рдЗрд╕ рдХреЗ рдорд╛рди рд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ (рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдЕрдкрдиреЗ рдЖрдк рд╕реЗ рдирд╣реАрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЖрд░реНрдЧреНрдпреБрдореЗрдВрдЯреНрд╕, рд╕реБрдкрд░ рдпрд╛ рдиреНрдпреВрдЯрд╛рд░реНрдЧреЗрдЯ)ред рдПрд░реЛ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдЖрдкрдХреЛ рдПрдХ рдирд╛рдо рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рддреАрд░ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдЕрдирд╛рдо рд╣реИрдВ рдЬрдм рддрдХ рдХрд┐ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╕реМрдВрдкрд╛ рдЬрд╛рдПред

рдореВрд▓ рд╡рд╛рдХреНрдп рд░рдЪрдирд╛
 (param1, param2, тАж, paramN) => { statements } (param1, param2, тАж, paramN) => expression // : (param1, param2, тАж, paramN) => { return expression; } //       : (singleParam) => { statements } singleParam => { statements } //       : () => { statements } () => expression // : () => { return expression; } 


рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕
 //     ,     params => ({foo: bar}) // Rest       (param1, param2, ...rest) => { statements } (param1 = defaultValue1, param2, тАж, paramN = defaultValueN) => { statements } //    var f = ([a, b] = [1, 2], {x: c} = {x: a + b}) => a + b + c; f(); // 6 

рддреАрд░ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА, рдЖрдк рдпрд╣рд╛рдВ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдХреЗ рд▓рд┐рдП ... рдХрд╛


рдХреЗ рд▓рд┐рдП ... рдХрдерди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рд▓реВрдк рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИ (рд╕рд░рдгреА, рдорд╛рдирдЪрд┐рддреНрд░, рд╕реЗрдЯ, рддрд░реНрдХреЛрдВ рдХреА рдПрдХ рд╡рд╕реНрддреБ рдФрд░ рдЬреИрд╕реЗ), рдкреНрд░рддреНрдпреЗрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдкрд░ рдЖрд╣реНрд╡рд╛рди рдХрд░рддреЗ рд╣реБрдП рдСрдкрд░реЗрдЯрд░ рдХреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рдЧреБрдгреЛрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдорд╛рди рдХреЗ рд▓рд┐рдП рдЪрд░рдгрдмрджреНрдз рдХрд░рддреЗ рд╣реИрдВред

рдХреНрдпреЛрдВ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП ... рдХреЗ рд▓рд┐рдП рдкрд╛рд╢ рдореЗрдВ iterate рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП? рдХреНрдпреЛрдВрдХрд┐ рдЗрдВрдЬрди рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдХреНрд░рдо рдореЗрдВ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рдкрд░рд┐рдгрд╛рдо рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдПрдХ рд╕рдВрдкрддреНрддрд┐ рдПрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдореЗрдВ рдмрджрд▓ рдЬрд╛рддреА рд╣реИ рдФрд░ рдлрд┐рд░ рдмрджрд▓ рдЬрд╛рддреА рд╣реИ, рддреЛ рд▓реВрдк рдореЗрдВ рдЗрд╕рдХрд╛ рдореВрд▓реНрдп рдЗрд╕рдХрд╛ рдЕрдВрддрд┐рдо рдореВрд▓реНрдп рд╣реИред рдЪрдХреНрд░ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╣рдЯрд╛ рджреА рдЧрдИ рдПрдХ рд╕рдВрдкрддреНрддрд┐ рдЗрд╕рдореЗрдВ рднрд╛рдЧ рдирд╣реАрдВ рд▓реЗрдЧреАред рд▓реВрдк рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдЬреЛрдбрд╝реЗ рдЧрдП рдЧреБрдгреЛрдВ рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдпрджрд┐ рдЖрдкрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдЗрд╕реЗ рдкрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЗ рджреМрд░рд╛рди рдХрд┐рд╕реА рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдЬреЛрдбрд╝рдирд╛, рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдирд╛ рдпрд╛ рд╣рдЯрд╛рдирд╛ рдирд╣реАрдВ рд╣реИред рдЗрд╕ рдмрд╛рдд рдХреА рдХреЛрдИ рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЬреЛрдбрд╝реЗ рдЧрдП рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХреЛ рдЪрдХреНрд░ рджреНрд╡рд╛рд░рд╛ рджреМрд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдкрд░рд┐рд╡рд░реНрддрди рдХрд┐рдП рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рд╣рдЯрд╛рдП рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкреБрдирд░рд╛рд╡реГрддреНрдд рдЪрд░ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реИ, рдПрдХ рд╕рдВрдЦреНрдпрд╛ рдирд╣реАрдВ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдк рдЪрд░ рдХреЗ рд╕рд╛рде рдХреЛрдИ рдЧрдгрдирд╛ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдЙрдиреНрд╣реЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрдЬрд╛рдп рддрд╛рд░реЛрдВ рдХреЛ рд╕рдорддрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рддреЛ рддрд╛рд░реНрдХрд┐рдХ рддреНрд░реБрдЯрд┐рдпреЛрдВ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП!

рд▓реВрдк рдХреЗ рд▓рд┐рдП ... рд▓реВрдк рдХреЗ рд▓рд┐рдП ... рдХреЗ рд╡рд┐рдкрд░реАрдд, рд▓реВрдк рдореЗрдВ рд╕рднреА рдПрдиреНрдпреВрдорд░реЗрдЯреЗрдб рдкреНрд░реЙрдкрд░реНрдЯреАрдЬ рджреЗрддрд╛ рд╣реИ, рдЬрд┐рдирдореЗрдВ рдиреЙрди-рдкреВрд░реНрдгрд╛рдВрдХ рдирд╛рдо рдФрд░ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реА рдЪреАрдЬреЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред

рд▓реВрдк рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рд▓рд┐рдП ...
 for (var i of arr) //for ( of ) arr[i] = "something value" 

рдЙрджрд╛рд╣рд░рдг:
 Object.prototype.objCustom = function() {}; Array.prototype.arrCustom = function() {}; let iterable = [3, 5, 7]; iterable.foo = 'hello'; for (let i in iterable) console.log(i); // 0, 1, 2, "foo", "arrCustom", "objCustom" for (let i in iterable) { if (iterable.hasOwnProperty(i)) console.log(i); //  0, 1, 2, "foo" } for (let i of iterable) console.log(i); // 3, 5, 7 

рдкреНрд░рддреНрдпреЗрдХ рдСрдмреНрдЬреЗрдХреНрдЯ objCustom рдкрджреНрдзрддрд┐ рдХреЛ рдЗрдирд╣реЗрд░рд┐рдЯ рдХрд░реЗрдЧрд╛ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ Array Object.prototype рдФрд░ Array.prototype рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдмрдирд╛рдХрд░ arrCustom рдкрджреНрдзрддрд┐ рдХреЛ рдЗрдирд╣реЗрд░рд┐рдЯ рдХрд░реЗрдЧрд╛ред рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдСрдмреНрдЬреЗрдХреНрдЯ рдЗрдирд╣реЗрд░рд┐рдЯ рдХрд░рдиреЗ рдХреЗ рдХрд╛рд░рдг рдУрдмреНрдЬреЗрдХреНрдЯ рдФрд░ рдСрд░реНрдХреБрдЯреЛрдЯрд╛рдЗрдк рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛рдПрдЧрд╛ред

рд▓реВрдк рдХреЗрд╡рд▓ рдкреБрдирд░рд╛рд╡реГрддреНрдд рд╡рд╕реНрддреБ рдХреЗ рдкреНрд░рдЧрдгрд┐рдд рдЧреБрдгреЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕ рдХреНрд░рдо рдореЗрдВ рд╡реЗ рдмрдирд╛рдП рдЧрдП рдереЗред рдпрд╣ рдорд╛рди 3, 5, 7 рдФрд░ рд╣реИрд▓реЛ рдХреЛ рдкреНрд░рд┐рдВрдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдЧрдгрдирд╛ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реИрдВред рдЧреБрдгреЛрдВ рдФрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдирд╛рдо рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, arrCustom рдФрд░ objCustomред

рд▓реВрдк рдкрд┐рдЫрд▓реЗ рдПрдХ рдХреЗ рд╕рдорд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП hasOwnProperty () рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╡рд╕реНрддреБ рдХреА рдпрд╣ рд╕рдВрдкрддреНрддрд┐ рдЕрдкрдиреА рд╣реИ рдпрд╛ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реА рд╣реИред рдХреЗрд╡рд▓ рд╕реНрд╡рдпрдВ рдХреЗ рдЧреБрдг рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред 0, 1, 2 рдФрд░ foo рдирд╛рдо рдХреЗрд╡рд▓ рд╡рд╕реНрддреБ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╣реИрдВ (рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдирд╣реАрдВ)ред ArCustom рдФрд░ objCustom рддрд░реАрдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдирд╣реАрдВ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реЗ рд╣реИрдВред

рдпрд╣ рд▓реВрдк рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЛ рджрд░рдХрд┐рдирд╛рд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдкреБрдирд░рд╛рд╡реГрддреНрдд рд╡рд╕реНрддреБ рдХреЗ рдорд╛рдиреЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЗрд╕реЗ рдкреБрдирд░рд╛рд╡реГрддреНрдд рдХрд░рдиреЗ рдХреА рд╡рд┐рдзрд┐ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдП рдЧрдП рд╣реИрдВ, рдЕрд░реНрдерд╛рддреНред рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдЧреБрдг рдирд╣реАрдВ, рд▓реЗрдХрд┐рди рд╕рд░рдгреА 3, 5, 7 рдХреЗ рдорд╛рдиред

рдЧрдгрдирд╛ рдХреА рдЧрдИ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдирд╛рдо


рд╡рд╕реНрддреБрдУрдВ рдФрд░ рдЙрдирдХреЗ рддрддреНрд╡реЛрдВ рдХреА рдШреЛрд╖рдгрд╛ рдХреЗ рд▓рд┐рдП рд╕рд┐рдВрдЯреИрдХреНрд╕ рдЧрдгрдирд╛ рдХреА рдЧрдИ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдирд╛рдореЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдЖрдкрдХреЛ рдХреЛрд╖реНрдардХ [] рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдирд╛рдо рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ рдЯреЗрдореНрдкрд▓реЗрдЯ рд╢рд╛рдмреНрджрд┐рдХ рдХреЗ рд╕рдорд╛рди рд╣реИред

рдкрд░рд┐рдХрд▓рд┐рдд рдирд╛рдореЛрдВ рдХрд╛ рдЙрджрд╛рд╣рд░рдг:
 var a = () => "world"; var a = { ["a" + (10 - 6)]: { ["some" + "string"]: true, [10 + 20]: 10, [`hello ${a()}`]: a() } } 



Object.assign ()


Object.assign () рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рд╕реА рдПрдХ рдпрд╛ рдЕрдзрд┐рдХ рд╕реНрд░реЛрдд рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реЗ рд▓рдХреНрд╖реНрдп рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдПрдиреНрдпреВрдорд░реЗрдЯреЗрдб рдЧреБрдгреЛрдВ рдХреЗ рдорд╛рди рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХреЙрдкреА рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдпрд╣ рд▓рдХреНрд╖реНрдп рд╡рд╕реНрддреБ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рддрд╛ рд╣реИред

Object.assign () рд╡рд┐рдзрд┐ рд╕реНрд░реЛрдд рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реЗ рд▓рдХреНрд╖рд┐рдд рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдПрдиреНрдпреВрдорд░реЗрдЯреЗрдб рдФрд░ рджреЗрд╢реА рдЧреБрдгреЛрдВ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рддреА рд╣реИред рдпрд╣ рд╕реНрд░реЛрдд рд╡рд╕реНрддреБрдУрдВ рдкрд░ рдЖрдВрддрд░рд┐рдХ [[рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ]] рд╡рд┐рдзрд┐ рдФрд░ рд▓рдХреНрд╖реНрдп рд╡рд╕реНрддреБ рдкрд░ рдЖрдВрддрд░рд┐рдХ [[рд╕реЗрдЯ]] рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдЧреЗрдЯрд░реНрд╕ рдФрд░ рд╕реЗрдЯрд░ рднреА рдХрд╣рддрд╛ рд╣реИред рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ рдирдП рдЧреБрдгреЛрдВ рдХреА рдирдХрд▓ рдпрд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЧреБрдг рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдореЗрдВ рдирдИ рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХреЛ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдкрдпреБрдХреНрдд рд╡рд┐рдзрд┐ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдпрджрд┐ рдЗрдВрдЬреЗрдХреНрд╢рди рд╕реНрд░реЛрдд рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдЧреЗрдЯрд░реНрд╕ рд╣реЛрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдЙрдирдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рд╕рдВрдХреЗрдд рд╕рд╣рд┐рдд рд╕рдВрдкрддреНрддрд┐ рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдХреЗ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, Object.getOwnPropertyDescriptor () рдФрд░ Object.defineProperty () рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╕реНрдЯреНрд░рд┐рдВрдЧ рдФрд░ рдкреНрд░рддреАрдХ рджреЛрдиреЛрдВ рдХреЗ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рдЧреБрдгреЛрдВ рдХреА рдирдХрд▓ рдХреА рдЬрд╛рддреА рд╣реИред

рдПрдХ рддреНрд░реБрдЯрд┐ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрдм рд╕рдВрдкрддреНрддрд┐ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рддреЛ TypeError рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рд▓рдХреНрд╖реНрдп рдСрдмреНрдЬреЗрдХреНрдЯ рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рд░рд╣рддрд╛ рд╣реИред

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрджрд┐ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдорд╛рди рд╢реВрдиреНрдп рдпрд╛ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реИрдВ, рддреЛ Object.assign () рд╡рд┐рдзрд┐ рдЕрдкрд╡рд╛рдж рдХреЛ рдирд╣реАрдВ рдлреЗрдВрдХрддреА рд╣реИред

рдЙрджрд╛рд╣рд░рдг: рдПрдХ рд╡рд╕реНрддреБ рдХрд╛ рдХреНрд▓реЛрдирд┐рдВрдЧ
 var obj = { a: 1 }; var copy = Object.assign({}, obj); console.log(copy); // { a: 1 } 

рдЙрджрд╛рд╣рд░рдг: рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рд╡рд┐рд▓рдп рдХрд░рдирд╛
 var o1 = { a: 1 }; var o2 = { b: 2 }; var o3 = { c: 3 }; var obj = Object.assign(o1, o2, o3); console.log(obj); // { a: 1, b: 2, c: 3 } console.log(o1); // { a: 1, b: 2, c: 3 },     . 


рдмрд╛рдХреА рдкреИрд░рд╛рдореАрдЯрд░


рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╢реЗрд╖ рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдЖрдкрдХреЛ рдПрдХ рд╕рд░рдгреА рдХреЗ рд░реВрдк рдореЗрдВ рдЕрд╕реАрдорд┐рдд рддрд░реНрдХ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рдпрджрд┐ рдЕрдВрддрд┐рдо рдирд╛рдорд┐рдд рдлрд╝рдВрдХреНрд╢рди рддрд░реНрдХ рдореЗрдВ рдПрдХ рдЙрдкрд╕рд░реНрдЧ рд╣реИ ..., рддреЛ рдпрд╣ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдкрд╛рд╕ рджрд┐рдП рдЧрдП рддрд░реНрдХреЛрдВ рдХреА рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ 0 рд╕реЗ theArgs.length рдХреЗ рддрддреНрд╡реЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд░рдгреА рдмрди рдЬрд╛рддрд╛ рд╣реИред

рд╡рд╛рдХреНрдп-рд╡рд┐рдиреНрдпрд╛рд╕
 function(a, b, ...theArgs) { // ... } 


рд╢реЗрд╖ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг:
 function name (a, b, ...c) {} name (0, 1, 2, 3,) 

рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, a = 0 b = 1 c [0] = 2 c [1] = 3
рдпрджрд┐ рд╢реЗрд╖ рдкреИрд░рд╛рдореАрдЯрд░ рдкрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдПрдХ рдЦрд╛рд▓реА рд╕рд░рдгреА рд╣реЛрдЧреА (рд╕рд╛рдзрд╛рд░рдг рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдпрд╣ рдХрднреА рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рд╣реЛрдЧреА)ред

рдЗрд╕ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХреЗрд╡рд▓ рдлрд╝рдВрдХреНрд╢рди рддрд░реНрдХреЛрдВ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдЕрдиреНрдп рд╕реНрдерд╛рдиреЛрдВ рдореЗрдВ рднреА, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдиреЗ рдФрд░ рд╕рдВрдпреЛрдЬрди рдХреЗ рд▓рд┐рдП:

 var a = [ 0, 1, 2 ]; var b = [ 3, 4, 5 ]; var c = [ ...a, ...b ]; // [ 0, 1, 2, 3, 4, 5 ] 


рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкреИрд░рд╛рдореАрдЯрд░


рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкреИрд░рд╛рдореАрдЯрд░ рдЖрдкрдХреЛ рдФрдкрдЪрд╛рд░рд┐рдХ рдлрд╝рдВрдХреНрд╢рди рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рдиреЛрдВ рдХреЛ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдпрджрд┐ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдмрд┐рдирд╛ рддрд░реНрдХ рдХреЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╛ рдпрджрд┐ рдкреИрд░рд╛рдореАрдЯрд░ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЕрдкреНрд░рдХрд╛рд╢рд┐рдд рд╣реИред

рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ, рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдкреИрд░рд╛рдореАрдЯрд░ рдЬреЛ рдорд╛рдиреЛрдВ рдХреЛ рдкрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдЬрдм рдЗрд╕реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рдХреЛ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдпрд╣ рдПрдХ рдЕрд▓рдЧ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдРрд╕реЗ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рд╣реИ рдЬреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХрд╛ рдЗрд░рд╛рджрд╛ рд╣реИред

рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рдХреЗрд╡рд▓ рдПрдХ рдФрдкрдЪрд╛рд░рд┐рдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рд╕реМрдВрдкрд╛ рдЧрдпрд╛ рд╣реИ рдпрджрд┐, рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдХреЗ рджреМрд░рд╛рди, рдЗрд╕ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд▓рд┐рдП рдорд╛рди рдкрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдпрд╛ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдерд╛ред

рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг:
 function myFun(a=5) { return a*a; } console.log(myFun()); // 25 


рд╡рд┐рдирд╛рд╢рдХрд╛рд░реА рдХрд╛рд░реНрдп


рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдПрдХреНрд╕рдкреНрд░реЗрд╢рдВрд╕ рдореЗрдВ рд╡рд┐рдирд╛рд╢рдХрд╛рд░реА рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдЖрдкрдХреЛ рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдПрдХ рд╕рд░рдгреА рдпрд╛ рд╢рд╛рдмреНрджрд┐рдХ рдХреА рдШреЛрд╖рдгрд╛ рдХреЗ рд╕рдорд╛рди рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрд░реЗ рдпрд╛ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рд╕реЗ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рдСрдмреНрдЬреЗрдХреНрдЯ рдпрд╛ рдРрд░реЗ рдбрд┐рдХреНрд▓реЗрд░реЗрд╢рди рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рдПрдХ рд╕рдЬрд╛рддреАрдп рдбреЗрдЯрд╛ рдкреИрдХреЗрдЬ рдмрдирд╛рдиреЗ рдХрд╛ рдПрдХ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред рдРрд╕рд╛ рдкреИрдХреЗрдЬ рдмрдирд╛рддреЗ рд╕рдордп, рдЖрдкрдХреЛ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рдорд┐рд▓рддрд╛ рд╣реИред рдЖрдк рдЗрд╕реЗ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рднреА рд╡рд╛рдкрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд╡рд┐рдирд╛рд╢рдХрд╛рд░реА рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдкреНрд░рдореБрдЦ рддрд░реАрдХреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдСрдкрд░реЗрдЯрд░ рдХреЗ рд╕рд╛рде рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдкрдврд╝рдирд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЖрдк рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХрдИ рдЕрдиреНрдп рдЙрдкрдпреЛрдЧ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред

рд╡рд┐рдирд╛рд╢рдХрд╛рд░реА рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдХрд╛ рдЙрджрд╛рд╣рд░рдг:
 var a, b, rest; [a, b] = [1, 2]; console.log(a); // 1 console.log(b); // 2 [a, b, ...rest] = [1, 2, 3, 4, 5]; console.log(a); // 1 console.log(b); // 2 console.log(rest); // [3, 4, 5] ({a, b} = {a:1, b:2}); console.log(a); // 1 console.log(b); // 2 

рдЖрдк рдпрд╣рд╛рдВ рдФрд░ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред

рдирдХреНрд╢рд╛


рдорд╛рдирдЪрд┐рддреНрд░ - рдореБрдЦреНрдп-рдореВрд▓реНрдп рдЬреЛрдбрд╝реЗ рд╡рд╛рд▓реА рдПрдХ рд╡рд╕реНрддреБ рдФрд░ рд╕рдореНрдорд┐рд▓рди рдХреНрд░рдо рдХреЛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд░рдирд╛ред рдХрд┐рд╕реА рднреА рдореВрд▓реНрдп (рджреЛрдиреЛрдВ рд╡рд╕реНрддреБрдУрдВ рдФрд░ рдЖрджрд┐рдо) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреБрдВрдЬреА рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдПрдХ рдЙрджрд╛рд╣рд░рдг:
 var myMap = new Map(); var keyObj = {}, keyFunc = function () {}, keyString = "a string"; //   myMap.set(keyString, "value associated with 'a string'"); myMap.set(keyObj, "value associated with keyObj"); myMap.set(keyFunc, "value associated with keyFunc"); myMap.size; // 3 //   myMap.get(keyString); // "value associated with 'a string'" myMap.get(keyObj); // "value associated with keyObj" myMap.get(keyFunc); // "value associated with keyFunc" myMap.get("a string"); // "value associated with 'a string'" //   keyString === 'a string' myMap.get({}); // undefined,   keyObj !== {} myMap.get(function() {}) // undefined,   keyFunc !== function () {} 

рд╡рд╕реНрддреБ рд╕реЗ рдорд╛рдирдЪрд┐рддреНрд░ рдХрд╛ рдЕрдВрддрд░:

  • рдСрдмреНрдЬреЗрдХреНрдЯ рдХреБрдВрдЬрд┐рдпрд╛рдБ рд▓рд╛рдЗрдиреНрд╕ рдФрд░ рд╕рд┐рдВрдмрд▓ рд╣реИрдВ, рдЬрдмрдХрд┐ рдлрд╝рдВрдХреНрд╢рдВрд╕, рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдФрд░ рдкреНрд░рд╛рдЗрдорд┐рдЯрд┐рд╡реНрд╕ рд╕рд╣рд┐рдд рдХреЛрдИ рднреА рдорд╛рди рдореИрдк рдХреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
  • рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдореИрдк рдореЗрдВ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХрд╛ рдЖрджреЗрд╢ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдорд╛рдирдЪрд┐рддреНрд░ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЗ рджреМрд░рд╛рди, рдЪрд╛рдмрд┐рдпрд╛рдБ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХреНрд░рдо рдореЗрдВ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рддреА рд╣реИрдВред
  • рдЖрдк рдЖрдХрд╛рд░ рдХреА рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдорд╛рдирдЪрд┐рддреНрд░ рдореЗрдВ рддрддреНрд╡реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдЖрд╕рд╛рдиреА рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрдмрдХрд┐ рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рддрддреНрд╡реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗрд╡рд▓ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред
  • рдорд╛рдирдЪрд┐рддреНрд░ рдПрдХ рдЪрд▓рдиреЗ рдпреЛрдЧреНрдп рд╡рд╕реНрддреБ рд╣реИ рдФрд░ рдЗрд╕реЗ рд╕реАрдзреЗ рдкреБрди: рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рд╡рд╕реНрддреБ рдХреЛ рдХреБрдВрдЬреА рдХреА рд╕реВрдЪреА рдФрд░ рдЙрдирдХреЗ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреА рдореИрдиреНрдпреБрдЕрд▓ рд░рд╕реАрдж рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
  • рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдПрдХ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП рдЗрд╕рдореЗрдВ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХрд╛ рдПрдХ рдорд╛рдирдХ рд╕реЗрдЯ рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рд▓рд╛рдкрд░рд╡рд╛рд╣ рд╣реЛрдиреЗ рдкрд░, рдЖрдкрдХреА рдЪрд╛рдмрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдЕрдВрддрд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИред ES5 рдХреА рд░рд┐рд▓реАрдЬрд╝ рдХреЗ рдмрд╛рдж рд╕реЗ, рдЗрд╕реЗ map = Object.create (null) рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
  • рдЪрд╛рдмрд┐рдпреЛрдВ рдХреЛ рдмрд╛рд░-рдмрд╛рд░ рдЬреЛрдбрд╝рдиреЗ рдпрд╛ рд╣рдЯрд╛рдиреЗ рдХреЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдорд╛рдирдЪрд┐рддреНрд░ рдХрд╛ рдмреЗрд╣рддрд░ рдкреНрд░рджрд░реНрд╢рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдЧреБрдг рдФрд░ рд╡рд┐рдзрд┐рдпрд╛рдБ:

  • Map.prototyp.size - рдПрдХ рдорд╛рдирдЪрд┐рддреНрд░ рдкрд░ рдХреБрдВрдЬреА \ value рдЬреЛрдбрд╝реЗ рдХреА рд╕рдВрдЦреНрдпрд╛ рд▓реМрдЯрд╛рддрд╛ рд╣реИ
  • Map.prototyp.set (рдХреБрдВрдЬреА, рдорд╛рди) - рдкрд╛рд╕ рдХрд┐рдП рдЧрдП key \ value рдЬреЛрдбрд╝реЗ рдХреЛ рдореИрдк рдореЗрдВ рдЬреЛрдбрд╝рддрд╛ рд╣реИред рдпрджрд┐ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреБрдВрдЬреА рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рд╣реИ, рддреЛ рдпрд╣ рдирдП рдореВрд▓реНрдп рдХреЗ рд╕рд╛рде рдУрд╡рд░рд░рд╛рдЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
  • Map.prototyp.get (рдХреБрдВрдЬреА) - рдкрд╛рд░рд┐рдд рдХреБрдВрдЬреА рдХрд╛ рдорд╛рди рд▓реМрдЯрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдХреЛрдИ рдХреБрдВрдЬреА рдирд╣реАрдВ рд╣реИ, рддреЛ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдЧрд╛
  • Map.prototype.has (рдХреБрдВрдЬреА) - рдпрджрд┐ рдкрд╛рд╕ рдХреБрдВрдЬреА рдореМрдЬреВрдж рд╣реИ рдФрд░ рдпрд╣ рдирд╣реАрдВ рд╣реИ рддреЛ рдЧрд▓рдд рд╣реИ
  • Map.prototyp.delete (рдХреБрдВрдЬреА) - рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреА \ value рдЬреЛрдбрд╝реА рдХреЛ рд╣рдЯрд╛рддрд╛ рд╣реИ рдФрд░ рд╕рд╣реА рд▓реМрдЯрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдХреБрдВрдЬреА рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ, рддреЛ рдЧрд▓рдд рджреЗрддрд╛ рд╣реИред
  • Map.prototyp.clear () - рдореИрдк рд╕реЗ рд╕рднреА рдкреНрд░рдореБрдЦ \ value рдЬреЛрдбрд╝реЗ рдХреЛ рдирд┐рдХрд╛рд▓рддрд╛ рд╣реИ
  • Map.prototyp.keys () - рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╛рдирдЪрд┐рддреНрд░ рдкрд░ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХрд╛ рдПрдХ рдкреБрдирд░рд╛рд╡рд░реНрддрдХ рд▓реМрдЯрд╛рддрд╛ рд╣реИ
  • Map.prototyp.values тАЛтАЛ() - рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдХреЗ рд▓рд┐рдП рдорд╛рдирдЪрд┐рддреНрд░ рдкрд░ рдореВрд▓реНрдпреЛрдВ рдХрд╛ рдПрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рджреЗрддрд╛ рд╣реИ
  • Map.prototyp.entries () - рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдХреЗ рд▓рд┐рдП рдореИрдк рдкрд░ рд╕рд░рдгреА [рдХреБрдВрдЬреА, рдореВрд▓реНрдп] рдХрд╛ рдПрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рджреЗрддрд╛ рд╣реИ


рд╕реЗрдЯ


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

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

рдЧреБрдг рдФрд░ рдЙрджрд╛рд╣рд░рдг рддрд░реАрдХреЗ рд╕реЗрдЯ рдХрд░реЗрдВ
  • рдЖрдХрд╛рд░ - рд╕реЗрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рддрддреНрд╡реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд▓реМрдЯрд╛рддрд╛ рд╣реИред
  • add (value) - рд╕реЗрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рджрд┐рдП рдЧрдП рдорд╛рди рдХреЗ рд╕рд╛рде рдПрдХ рдирдпрд╛ рддрддреНрд╡ рдЬреЛрдбрд╝рддрд╛ рд╣реИред рд╕реЗрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рд▓реМрдЯрд╛рддрд╛ рд╣реИред
  • clear () - рд╕реЗрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реЗ рд╕рднреА рддрддреНрд╡реЛрдВ рдХреЛ рдирд┐рдХрд╛рд▓рддрд╛ рд╣реИред
  • рдбрд┐рд▓реАрдЯ (рдореВрд▓реНрдп) - рдорд╛рди рд╕реЗ рдЬреБрдбрд╝реЗ рддрддреНрд╡ рдХреЛ рд╣рдЯрд╛рддрд╛ рд╣реИ рдФрд░ рдЙрд╕ рдорд╛рди рдХреЛ рд▓реМрдЯрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ (рдорд╛рди) рдкрд╣рд▓реЗ рд╣реЛрддрд╛ рд╣реИред рд╣реИ (рдорд╛рди) рдмрд╛рдж рдореЗрдВ рдЧрд▓рдд рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдЧрд╛ред
  • рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдБ () - рдПрдХ рдирдпрд╛ Iterator рдСрдмреНрдЬреЗрдХреНрдЯ рджреЗрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕рдореНрдорд┐рд▓рди рдХреНрд░рдо рдореЗрдВ рд╕реЗрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдХреЗ рд▓рд┐рдП [рдорд╛рди, рдорд╛рди] рдХреА рдПрдХ рд╕рд░рдгреА рд╣реЛрддреА рд╣реИред рдпрд╣ рдореИрдк рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕рдорд╛рди рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХреА рдХреБрдВрдЬреА рдФрд░ рдореВрд▓реНрдп рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдВ рд╕рдорд╛рди рдореВрд▓реНрдп рд╣реИред
  • forEach (callbackFn [, thisArg]) - рдХреЙрд▓рдмреИрдХ рдореЗрдВ рдПрдХ рдмрд╛рд░ рд╕реЗрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдореМрдЬреВрдж рдкреНрд░рддреНрдпреЗрдХ рдорд╛рди рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рдХрд░реЗрдВред рдпрджрд┐ рдпрд╣ 'рдПрд░реНрдЧ' рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣реИ, рддреЛ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреНрд░рддреНрдпреЗрдХ рдХреЙрд▓рдмреИрдХ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдорд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
  • has (value) - рдПрдХ рдмреВрд▓рд┐рдпрди рдорд╛рди рджреЗрддрд╛ рд╣реИ рдЬреЛ рдпрд╣ рдкреБрд╖реНрдЯрд┐ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рджрд┐рдП рдЧрдП рдорд╛рди рд╡рд╛рд▓рд╛ рддрддреНрд╡ рд╕реЗрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдореМрдЬреВрдж рд╣реИ рдпрд╛ рдирд╣реАрдВред
  • рдорд╛рди () - рдПрдХ рдирдпрд╛ Iterator рдСрдмреНрдЬреЗрдХреНрдЯ рджреЗрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕рдореНрдорд┐рд▓рди рдХреНрд░рдо рдореЗрдВ рд╕реЗрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдХреЗ рд▓рд┐рдП рдорд╛рди рд╢рд╛рдорд┐рд▓ рд╣реИрдВред

рд╕реЗрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
 var mySet = new Set(); mySet.add(1); // Set { 1 } mySet.add(5); // Set { 1, 5 } mySet.add(5); // Set { 1, 5 } mySet.add("some text"); // Set { 1, 5, 'some text' } var o = {a: 1, b: 2}; mySet.add(o); mySet.add({a: 1, b: 2}); //  o    ,      mySet.has(1); // true mySet.has(3); // false, 3     set mySet.has(5); // true mySet.has(Math.sqrt(25)); // true mySet.has("Some Text".toLowerCase()); // true mySet.has(o); // true mySet.size; // 5 mySet.delete(5); //  5  set mySet.has(5); // false, 5   mySet.size; // 4,     console.log(mySet); // Set {1, 'some text', Object {a: 1, b: 2}, Object {a: 1, b: 2}} 

рдмрд╛рдИрдкрд╛рд╕ рд╕реЗрдЯ
 //    : 1, "some text", {"a": 1, "b": 2} for (let item of mySet) console.log(item); //    : 1, "some text", {"a": 1, "b": 2} for (let item of mySet.keys()) console.log(item); //    : 1, "some text", {"a": 1, "b": 2} for (let item of mySet.values()) console.log(item); //    : 1, "some text", {"a": 1, "b": 2} //(key  value    ) for (let [key, value] of mySet.entries()) console.log(key); //  Set  Array var myArr = Array.from(mySet); // [1, "some text", {"a": 1, "b": 2}] //       HTML  mySet.add(document.body); mySet.has(document.querySelector("body")); // true //   Array  Set   mySet2 = new Set([1,2,3,4]); mySet2.size; // 4 [...mySet2]; // [1,2,3,4] //      var intersection = new Set([...set1].filter(x => set2.has(x))); //      var difference = new Set([...set1].filter(x => !set2.has(x))); //   set   forEach mySet.forEach(function(value) { console.log(value); }); // 1 // 2 // 3 // 4 



рдХрдХреНрд╖рд╛рдПрдВ


рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдХрдХреНрд╖рд╛рдПрдВ ECMAScript 2015 рдореЗрдВ рд╢реБрд░реВ рдХреА рдЧрдИ рдереАрдВ рдФрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╡рдВрд╢рд╛рдиреБрдХреНрд░рдо рдкрд░ рд╕рд┐рдВрдереЗрдЯрд┐рдХ рдЪреАрдиреА рд╣реИрдВред рдХреНрд▓рд╛рд╕ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдПрдХ рдирдП рдСрдмреНрдЬреЗрдХреНрдЯ-рдУрд░рд┐рдПрдВрдЯреЗрдб рдореЙрдбрд▓ рдХреЛ рдкреЗрд╢ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдФрд░ рд╡рд┐рд░рд╛рд╕рдд рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рдФрд░ рдЕрдзрд┐рдХ рд╕рд╣рдЬ рддрд░реАрдХрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

рдХрдХреНрд╖рд╛рдПрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ "рд╡рд┐рд╢реЗрд╖ рдХрд╛рд░реНрдп" рд╣реЛрддреА рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЬреИрд╕реЗ рдЖрдк рдлрд╝рдВрдХреНрд╢рди (рдлрд╝рдВрдХреНрд╢рди рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рдФрд░ рдлрд╝рдВрдХреНрд╢рди рдШреЛрд╖рдгрд╛рдПрдБ) рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЖрдк рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рдХреНрд▓рд╛рд╕ рдПрдирд╛рдЙрдВрд╕рдореЗрдВрдЯ рдФрд░ рдХреНрд▓рд╛рд╕ рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рдХреЗ рд╕рд╛рде рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдлрдВрдХреНрд╢рди рдбрд┐рдХреНрд▓реЗрд░реЗрд╢рди рдФрд░ рдХреНрд▓рд╛рд╕ рдбрд┐рдХреНрд▓реЗрд░реЗрд╢рди рдХреЗ рдмреАрдЪ рдХрд╛ рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рдлрдВрдХреНрд╢рди рдбрд┐рдХреНрд▓реЗрд░реЗрд╢рди рдлрд╣рд░рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рдХреНрд▓рд╛рд╕ рдбрд┐рдХреНрд▓реЗрд░реЗрд╢рди рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рдЕрдкрдиреА рдХрдХреНрд╖рд╛ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рд╣реА рдЙрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЕрдиреНрдпрдерд╛ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдПрдХ рд╕рдВрджрд░реНрдн Reference рдХреЛ рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рд╡рд░реНрдЧ рдШреЛрд╖рдгрд╛


рдХрдХреНрд╖рд╛ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкрд╣рд▓рд╛ рддрд░реАрдХрд╛ рдПрдХ рд╡рд░реНрдЧ рдШреЛрд╖рдгрд╛ рдХреЗ рд╕рд╛рде рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╡рд░реНрдЧ рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдФрд░ рд╡рд░реНрдЧ рдирд╛рдо рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ (рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, "myClass")ред
 class myClass{ constructor(height, width) { this.height = height; this.width = width; } } 

рдПрдХ рд╡рд░реНрдЧ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХрд╛ рджреВрд╕рд░рд╛ рддрд░реАрдХрд╛ рд╡рд░реНрдЧ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╣реИред рдЖрдк рдирд╛рдо рдФрд░ рдирд╛рдо рд░рд╣рд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдкрд╣рд▓реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╡рд░реНрдЧ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдирд╛рдо рдХрдХреНрд╖рд╛ рдХреЗ рд╕реНрдерд╛рдиреАрдп рджрд╛рдпрд░реЗ рдореЗрдВ рд╣реИ рдФрд░ рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рдХрдХреНрд╖рд╛ рдХреЗ рдЧреБрдгреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рди рдХрд┐ рдЗрд╕рдХрд╛ рдЙрджрд╛рд╣рд░рдгред
 //  var myClass = class { constructor(height, width) { this.height = height; this.width = width; } }; //  var myClass = class myClass { constructor(height, width) { this.height = height; this.width = width; } }; 

рдХрдХреНрд╖рд╛ рдХреА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпрд╛рдБ рдХрдХреНрд╖рд╛ рдХреА рдШреЛрд╖рдгрд╛рдУрдВ рдХреА рддрд░рд╣ рд╣реА рд▓рд╣рд░рд╛рддреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдЕрдзреАрди рд╣реИрдВ!

рдХреНрд▓рд╛рд╕ рдбрд┐рдХреНрд▓реЗрд░реЗрд╢рди рдмреЙрдбреАрдЬрд╝ рдФрд░ рдХреНрд▓рд╛рд╕ рдПрдХреНрд╕рдкреНрд░реЗрд╢рдВрд╕ рдХреЛ рд╕рдЦреНрдд рдореЛрдб рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╕рдЦреНрдд рдореЛрдб рд░рдирдЯрд╛рдЗрдо рдХреЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдФрд░ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдмрджрд▓рддрд╛ рд╣реИред
рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рдЦреНрдд рдореЛрдб рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реИ:
  • рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдЕрдкрд╡рд╛рдж рдореЗрдВ рдмрджрд▓реЗрдВ
  • рдкрд░рд┐рд╡рд░реНрддрди рдЬреЛ рдЕрдкрдиреЗ рдирд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдПрдХ рдЪрд░ рдХреА рдЧрдгрдирд╛ рдХреЛ рд╕рд░рд▓ рдХрд░рддреЗ рд╣реИрдВ;
  • , eval arguments;
  • , ┬л┬╗ JavaScript;


  1. .
  2. .
  3. , , .
  4. ( ).
  5. , , . , .
  6. . .
  7. рдЕрд╖реНрдЯрдХ рд╡рд░реНрдЧ рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рд╡рд╛рдХреНрдп рд╡рд┐рдиреНрдпрд╛рд╕ рдирд┐рд╖рд┐рджреНрдз рд╣реИред
  8. рдЖрджрд┐рдо рдореВрд▓реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдЧреБрдг рд╕реЗрдЯ рдХрд░рдирд╛ рдирд┐рд╖рд┐рджреНрдз рд╣реИред

рдЪрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд╛
рд╕рд░рд▓реАрдХрд░рдг рд╕рдЦреНрдд рдореЛрдб рдХреЛрдб рдореЗрдВ рдЗрд╕рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рд╕реНрдерд╛рди рдХреЗ рд╕рд╛рде рдЪрд░ рдирд╛рдо рдХреА рддреБрд▓рдирд╛ рдХреЛ рд╕рд░рд▓ рдХрд░рддрд╛ рд╣реИред
  1. рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдирд┐рд╖рд┐рджреНрдз рд╣реИред рдЗрд╕рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд░рдирдЯрд╛рдЗрдо рдкрд░, рдмреНрд▓реЙрдХ рдХреЗ рдЕрдВрджрд░ рдХреЛрдИ рднреА рдирд╛рдо рд╕рдВрд╕рд╛рдзрд┐рдд рд╣реЛрдиреЗ рд╡рд╛рд▓реА рд╡рд╕реНрддреБ рдХреА рд╕рдВрдкрддреНрддрд┐ рдпрд╛ рдЖрд╕рдкрд╛рд╕ рдХреЗ (рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╡реИрд╢реНрд╡рд┐рдХ) рд╕рдВрджрд░реНрдн рдореЗрдВ рдПрдХ рдЪрд░ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░ рд╕рдХрддрд╛ рд╣реИ - рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рдЬрд╛рдирдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИред рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╡рд┐рдХрд▓реНрдк - рдПрдХ рдЫреЛрдЯреЗ рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рдЪрд░ рдХреЗ рд▓рд┐рдП рд╡рд╕реНрддреБ рдХреЛ рдЕрд╕рд╛рдЗрди рдХрд░рдирд╛ рдФрд░ рдлрд┐рд░ рдЗрд╕ рдЪрд░ рдХреА рд╕рдВрдкрддреНрддрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд╛рдВрдЫрд┐рдд рд╕рдВрдкрддреНрддрд┐ рддрдХ рдкрд╣реБрдВрдЪрдирд╛ред
  2. eval () рд╕рдЦреНрдд рдореЛрдб рдореЗрдВ рдЖрд╕рдкрд╛рд╕ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдирдП рдЪрд░ рдирд╣реАрдВ рдЬреЛрдбрд╝рддрд╛ рд╣реИред
  3. рд╕рд░рд▓ рдирд╛рдореЛрдВ рдХреЛ рд╣рдЯрд╛рдирд╛ рдирд┐рд╖рд┐рджреНрдз рд╣реИред

Eval рдФрд░ рддрд░реНрдХреЛрдВ рдХрд╛ рд╕рд░рд▓реАрдХрд░рдг
Strict рдореЛрдб рддрд░реНрдХреЛрдВ рдФрд░ eval рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рд╡рд┐рд╖рдорддрд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИ, рджреЛрдиреЛрдВ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдорд╛рддреНрд░рд╛ рдореЗрдВ рдЬрд╛рджреВ рдХреЛ рдирд┐рдпрдорд┐рдд рдХреЛрдб рдореЗрдВ рдорд┐рд▓рд╛рддреЗ рд╣реИрдВред рддреЛ eval рд╡реИрд░рд┐рдПрдмрд▓ рдХреЛ рдЬреЛрдбрд╝рддрд╛ рдпрд╛ рд╣рдЯрд╛рддрд╛ рд╣реИ рдФрд░ рдЙрдирдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдмрджрд▓рддрд╛ рд╣реИ, рдФрд░ рддрд░реНрдХреЛрдВ рдХрд╛ рдЪрд░ рдЖрдкрдХреЛ рдЗрд╕рдХреЗ рдЕрдиреБрдХреНрд░рдорд┐рдд рдЧреБрдгреЛрдВ рд╕реЗ рдЖрд╢реНрдЪрд░реНрдпрдЪрдХрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рдирд╛рдорд┐рдд рдлрд╝рдВрдХреНрд╢рди рддрд░реНрдХреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдВрджрд░реНрдн (рд╕рдорд╛рдирд╛рд░реНрдердХ рд╢рдмреНрдж) рд╣реИрдВред
  1. рдХреАрд╡рд░реНрдб рдХреЗ рдирд┐рд╖реНрдХрд╛рд╕рди рдФрд░ рддрд░реНрдХреЛрдВ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдпрд╛ рд╕рдВрд╢реЛрдзрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
  2. рддрд░реНрдХреЛрдВ рдХреЗ рдХреНрд╖реЗрддреНрд░ рдирд╛рдорд╛рдВрдХрд┐рдд рддрд░реНрдХреЛрдВ рд╕реЗ рдЬреБрдбрд╝реЗ рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореВрд▓реНрдпреЛрдВ рдХреА рдЙрдирдХреА рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдкреНрд░рддрд┐рдпрд╛рдВ рд╣реИрдВред
  3. рддрд░реНрдХред рдХрд╛рдиреВрдиреА рд╕рдВрдкрддреНрддрд┐ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИред рдирд┐рдпрдорд┐рдд рдХреЛрдб рдореЗрдВ, рддрд░реНрдХреЛрдВред рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдЕрд░реНрде рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдЖрд╣реНрд╡рд╛рди рдХреЗ рд▓рд┐рдП рддрд░реНрдХреЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

"рд╕реБрд░рдХреНрд╖рд┐рдд" рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ
рдХреБрдЫ рд╡реЗрдмрд╕рд╛рдЗрдЯреЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦрдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЕрдиреНрдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рдУрд░ рд╕реЗ рд╕рд╛рдЗрдЯ рдкрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдореЗрдВ, рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдирд┐рдЬреА рдЬрд╛рдирдХрд╛рд░реА рддрдХ рдкрд╣реБрдБрдЪ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдЬреЛ рдХрд┐ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдПрдХ рд╕реБрд░рдХреНрд╖рд╛ рдЫреЗрдж рд╣реИред
  1. рдлрд╝рдВрдХреНрд╢рди рдХреЛ рджрд┐рдпрд╛ рдЧрдпрд╛ рдорд╛рди рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ рдХрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд╕рдЦреНрдд рдореЛрдб рдореЗрдВ рдирд╣реАрдВ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИред
  2. рдореВрд▓ ECMAScript рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реНрдЯреИрдХ рдХреЛ "рд░рди" рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИред
  3. рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ, рддрд░реНрдХ рд╕рдВрдкрддреНрддрд┐ рдЕрдм рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдВрджрд░ рдмрдирд╛рдП рдЧрдП рдЪрд░ рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рддреА рд╣реИред

рдЖрдк Strict рдореЛрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП ECMAScript 5.1 рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред
рдФрд░ рдореЛрдЬрд╝рд┐рд▓рд╛ рд╕реЗ рдкреНрд░рд▓реЗрдЦрди рднреА ред

рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░реНрд╕


рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╡рд┐рдзрд┐ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдХреНрд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдирд╛рдИ рдЧрдИ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдмрдирд╛рдиреЗ рдФрд░ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
 class Student { constructor(name) { this.name = name; } } var robert = new Student('Robert'); console.log(robert.name); // Outputs 'Robert' 

рдХрдХреНрд╖рд╛ рд╕реЗ рдирдИ рд╡рд╕реНрддреБрдПрдВ рдмрдирд╛рддреЗ рд╕рдордп, рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ () рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬреЛ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред

рдПрдХ рд╡рд░реНрдЧ рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рд╡рд┐рдзрд┐ рд╣реЛ рд╕рдХрддреА рд╣реИ рдЬрд┐рд╕реЗ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдХреНрд▓рд╛рд╕ рдореЗрдВ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рд╣реИрдВ, рддреЛ рд╕рд┐рдВрдЯреИрдХреНрд╕рдПрдпрд░ рдЕрдкрд╡рд╛рдж рдХреЛ рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рд╕реБрдкрд░ рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рдкреИрд░реЗрдВрдЯ рдХреНрд▓рд╛рд╕ рдХреЗ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рдЗрдирд╡рд╛рдЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдпрджрд┐ рдЖрдкрдиреЗ рдПрдХ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рд╡рд┐рдзрд┐ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдЖрдзрд╛рд░ рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдирд┐рд░реНрдорд╛рддрд╛ рд╣реИ:
 constructor() {} 

рд╡реНрдпреБрддреНрдкрдиреНрди рд╡рд░реНрдЧреЛрдВ рдХреЗ рд▓рд┐рдП, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдирд┐рд░реНрдорд╛рддрд╛ рд╣реИ:
 constructor(...args) { super(...args); } 


рддрд░реАрдХреЛрдВ


рд╡рд┐рдзрд┐ рдШреЛрд╖рдгрд╛ рд╕рд┐рдВрдЯреИрдХреНрд╕:
 var obj = { property([parameters]) {}, get property() {}, set property(value) {}, * generator() {} }; 

рдЬрдирд░реЗрдЯрд░ рдХреЗ рддрд░реАрдХреЛрдВ рдХреА рд╕рдВрдХреНрд╖рд┐рдкреНрддрддрд╛
 var obj = { * g() { var index = 0; while(true) yield index++; } }; var it = obj.g(); console.log(it.next().value); // 0 console.log(it.next().value); // 1 


рдЬрдирд░реЗрдЯрд░ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рд╕рднреА рд╡рд┐рдзрд┐ рдкрд░рд┐рднрд╛рд╖рд╛рдПрдВ рдирд┐рд░реНрдорд╛рддрд╛ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ рдФрд░ рдпрджрд┐ рдЖрдк рдЙрдиреНрд╣реЗрдВ рддреНрд╡рд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдПрдХ рдЯрд╛рдЗрдкрд░ рдлреЗрдВрдХ рджреЗрдВрдЧреЗред

рдЧрдгрдирд╛ рдХреА рдЧрдИ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдирд╛рдо
 var obj = { ["foo" + 2](){ return 2; } console.log(obj.foo2()); // 2 }; 


рд╕реНрдереИрддрд┐рдХ рдЦреЛрдЬрд╢рдмреНрдж рдПрдХ рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП рд╕реНрдерд┐рд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред рд╕реНрдЯреИрдЯрд┐рдХ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдЙрдирдХреА рдХрдХреНрд╖рд╛ рдХреЛ рддреБрд░рдВрдд рдмрддрд╛рдП рдмрд┐рдирд╛ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЙрдиреНрд╣реЗрдВ рдХрдХреНрд╖рд╛ рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдкрд░ рдирд╣реАрдВ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЧреЗрдЯ рдФрд░ рдмрд╕рдиреЗ рдХрд╛ рд╕рд┐рдВрдЯреИрдХреНрд╕
 class Student { constructor(name) { this.name = name; } get Name() { return this.name; } set Name(newName) { if(typeof(newName) != "string") throw new Error("Name is not a string!"); else this.name = newName; // Robert } } var robert = new Student('robert'); robert.Name = "Robert"; console.log(robert.Name); 

  • рд╕реЗрдЯрд░ - рд▓рд┐рдЦрд┐рдд рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рддреНрдпрд╛рдкрди рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ (рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ)
  • getter - рдЧреБрдг рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЙрдиреНрд╣реЗрдВ рд╕реАрдзреЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ)ред рддрд░реНрдХ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреЗ

ES6 рдореЗрдВ рдХреЛрдИ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдЗрдирдХреИрдкреНрд╕реБрд▓реЗрд╢рди рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕ рддрд░рд╣:

 var Student = (function () { let privateProps = new WeakMap(); class Person { constructor(name, Age) { this.name = name; // public privateProps.set(this, {age: Age}); // private } get Age() { return privateProps.get(this).age; } set Age (newAge) { privateProps.set(this, {age: newAge}); } } return Person; })(); var robert = new Student('Robert', 19); robert.Age = 20; console.log(robert.Age); // 20 


рд╡рд┐рд░рд╛рд╕рдд


рдХреНрд▓рд╛рд╕ рдХреЛ рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдФрд░ рдХреНрд▓рд╛рд╕ рдПрдХреНрд╕рдкреНрд░реЗрд╢рдВрд╕ рдореЗрдВ рдПрдХ рдФрд░ рдХреНрд▓рд╛рд╕ рдХрд╛ рдмрдЪреНрдЪрд╛ рдкреИрджрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХреНрд╕рдЯреЗрдВрдбрд░реНрд╕ рдХреАрд╡рд░реНрдб рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

 class Person { constructor (age) { this.age = age; } sayAge () { return this.age; } } class Student extends Person { constructor (name, age) { super(age); this.name = name; } sayFull () { return `Hello my name is ${this.name} and I'm ${super.sayAge()} years old`; } } var robert = new Student("Robert", 19); console.log(robert.sayFull()); // Hello my name is Robert and I'm 19 years old 


рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ, рд╕реБрдкрд░ () рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдкреИрд░реЗрдВрдЯ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЗ рд╢рд░реАрд░ рдореЗрдВ рдЗрд╕ рдХреАрд╡рд░реНрдб рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реА рдХреЙрд▓ рд╕реЗ рдкрд╣рд▓реЗ рдЗрд╕реЗ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╕реБрдкрд░ рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдореВрд▓ рд╡рд╕реНрддреБ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЬрдм рдЖрдк рдЪрд╛рдЗрд▓реНрдб рдХреНрд▓рд╛рд╕ рдореЗрдВ рдкреИрд░реЗрдВрдЯ рдХреНрд▓рд╛рд╕ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЪрд╛рдЗрд▓реНрдб рдХреНрд▓рд╛рд╕ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЛ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рдЖрдк рд╕реБрдкрд░ () рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкреЗрд░реЗрдВрдЯ рдХреНрд▓рд╛рд╕ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
 class obj { constructor(name){ this.name = name; } displayName(){ return this.name.length; } } undefined class obj_2 extends obj { constructor(name) { super(name); } displayName() { //     return [this.name, super.displayName()]; } } var Obj = new obj_2("obj_2"); console.log(Obj.displayName()); // Array [ "obj_2", 5 ] 


рдлреИрд▓реА рдЗрдирд▓рд╛рдЗрди рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рдПрдХреНрд╕рдЯреЗрдВрдб рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде
рдпрд╣ рдЙрджрд╛рд╣рд░рдг рдЗрдирд▓рд╛рдЗрди рдбреЗрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдмрдврд╝рд╛рддрд╛ рд╣реИред
 class myDate extends Date { constructor() { super(); } getFormattedDate() { var months = [ 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec' ]; return this.getDate() + '-' + months[this.getMonth()] + '-' + this.getFullYear(); } } 


рд╡рд╛рджрд╛


рдкреНрд░реЙрдорд┐рд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрд╕реНрдердЧрд┐рдд рдФрд░ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдЧрдгрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╡рд╛рджрд╛ рддреАрди рд░рд╛рдЬреНрдпреЛрдВ рдореЗрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:
  • рд▓рдВрдмрд┐рдд: рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЕрд╡рд╕реНрдерд╛, рдкреВрд░реНрдг рдирд╣реАрдВ рдФрд░ рдЕрд╕реНрд╡реАрдХреГрдд рдирд╣реАрдВред
  • (fulfilled): .
  • (rejected): .

(pending), (fulfilled), (), (rejected), . , then. ( , , .. ┬л ┬╗, , , DOM.)

Promise.prototype.then() Promise.prototype.catch() , , .
рдЫрд╡рд┐

(promise)
рдирдП рдХреАрд╡рд░реНрдб рдФрд░ рдЗрд╕рдХреЗ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рдПрдХ рдкреНрд░реЙрдорд┐рд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкреНрд░реЙрдорд┐рд╕ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдПрдХ рддрд░реНрдХ рдХреЛ рдПрдХ рдирд┐рд╖реНрдкрд╛рджрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рджреЛ рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдкрд╣рд▓реЗ рдПрдХ (рд╕рдВрдХрд▓реНрдк) рдХреЛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдСрдкрд░реЗрд╢рди рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкреВрд░рд╛ рд╣реБрдЖ рдФрд░ рдореВрд▓реНрдп рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд▓реМрдЯрд╛рдпрд╛ рдЧрдпрд╛ред рдСрдкрд░реЗрд╢рди рдХреЗ рд╡рд┐рдлрд▓ рд╣реЛрдиреЗ рдкрд░ рджреВрд╕рд░рд╛ рдХреЙрд▓рдмреИрдХ (рдЕрд╕реНрд╡реАрдХрд╛рд░) рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рд╡рд┐рдлрд▓рддрд╛ рдХреЗ рдХрд╛рд░рдг рдХрд╛ рд╕рдВрдХреЗрдд рджреЗрддреЗ рд╣реБрдП рдПрдХ рдореВрд▓реНрдп рджреЗрддрд╛ рд╣реИ, рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рдПрдХ рддреНрд░реБрдЯрд┐ рд╡рд╕реНрддреБред
 const myPromise = new Promise((resolve, reject) => { //   ,    : resolve(someValue); //   //  reject("failure reason"); //  }); 

рджреЛ рддрд░реНрдХреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдСрдмреНрдЬреЗрдХреНрдЯ, рд╣рд▓ рдФрд░ рдЕрд╕реНрд╡реАрдХрд╛рд░, рд╡рд╛рджреЗ рдХреЗ рд╕рдлрд▓ рд╣реЛрдиреЗ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИ; рджреВрд╕рд░рд╛ рдЗрд╕реЗ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИред

рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╡рд╛рджрд╛ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдмрд╕ рдЗрд╕рдореЗрдВ рд╡рд╛рджрд╛ рд╡рд╕реНрддреБ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
 function myAsyncFunction(url) { return new Promise((resolve, reject) => { const xhr = new XMLHttpRequest(); xhr.open("GET", url); xhr.onload = () => resolve(xhr.responseText); xhr.onerror = () => reject(xhr.statusText); xhr.send(); }); } 

рдХреЗ рд╕рд╛рдеред рддрдм рдирд┐рд╖реНрдкрд╛рджрди рдФрд░ рдЕрд╕реНрд╡реАрдХреГрддрд┐ рд╕рдВрдЪрд╛рд▓рдХреЛрдВ рдХреЛ рд╕рдВрд▓рдЧреНрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рддрд░реАрдХреЛрдВ
  • Promise.all (iterable) - рд╕рднреА рд╡рд╛рджреЛрдВ рдХреЗ рдХреНрд░рд┐рдпрд╛рдиреНрд╡рдпрди рдпрд╛ рдЙрдирдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдП рдЬрд╛рдиреЗ рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░рддрд╛ рд╣реИред рдПрдХ рд╡рд╛рджрд╛ рд▓реМрдЯрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╕рднреА рд╡рд╛рджреЛрдВ рдХреЗ рдЪрд▓рдиреЗ рдХреЗ рдмрд╛рдж рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕ рдШрдЯрдирд╛ рдореЗрдВ рдХрд┐ рдХрд┐рд╕реА рднреА рд╡рд╛рджреЗ рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, Promise.all рднреА рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
  • Promise.allSettled (iterable) - рд╕рднреА рдкреНрд░рд╛рдкреНрдд рд╡рд╛рджреЛрдВ рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░рддрд╛ рд╣реИ (рдирд┐рд╖реНрдкрд╛рджрди рдФрд░ рдЕрд╕реНрд╡реАрдХреГрддрд┐ рджреЛрдиреЛрдВ)ред рдПрдХ рдРрд╕рд╛ рд╡рд╛рджрд╛ рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рдЬрдм рд╕рднреА рдкреНрд░рд╛рдкреНрдд рд╡рд╛рджреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдпрд╛ рдЕрд╕реНрд╡реАрдХреГрдд), рдЬрд┐рд╕рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рд╡рд╛рджреЛрдВ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рд╣реЛрддреА рд╣реИред
  • Promise.race (iterable) - рдХрд┐рд╕реА рднреА рдкреНрд░рд╛рдкреНрдд рд╡рд╛рджреЛрдВ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдпрд╛ рдЕрд╕реНрд╡реАрдХреГрддрд┐ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИред рдПрдХ рд╡рд╛рджрд╛ рд▓реМрдЯрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдкрд╣рд▓реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдпрд╛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдП рдЧрдП рд╡рд╛рджреЗ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЗ рд╕рд╛рде рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдпрд╛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
  • Promise.reject (рдХрд╛рд░рдг) - рдХрд╛рд░рдг рдХреЗ рдХрд╛рд░рдг рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╡рд╛рджрд╛ рд╡рд╛рдкрд╕ рдХрд░рддрд╛ рд╣реИред
  • Promise.resolve (рдорд╛рди) - рдкрд░рд┐рдгрд╛рдо рдорд╛рди рдХреЗ рд╕рд╛рде рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╡рд╛рджрд╛ рд▓реМрдЯрд╛рддрд╛ рд╣реИред

рдкреНрд░реЙрдорд┐рд╕ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк
  • рдкрдХрдбрд╝ (рдЪрд╛рд▓реВ) - рд╡рд╛рджреЗ рдХреА рдЕрд╕реНрд╡реАрдХреГрддрд┐ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рджрд┐рдП рдЧрдП рд╡рд╛рджреЗ рдХреЗ рд╕рд╛рде рдХрд┐рдП рдЧрдП рдПрдХ рдирдП рд╡рд╛рджреЗ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рддрд╛ рд╣реИ, рдпрд╛ рдЕрдЧрд░ рд╡рд╛рджрд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдореВрд▓ рд╕рдорд╛рдзрд╛рди рдореВрд▓реНрдпред
  • рддрдм (onFulfilled, onRejected) - рдПрдХ рд╡рд╛рджреЗ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдФрд░ рдЕрд╕реНрд╡реАрдХреГрддрд┐ рд╣реИрдВрдбрд▓рд░ рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рдФрд░ рдПрдХ рдирдпрд╛ рд╡рд╛рджрд╛ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рддрдерд╛рдХрдерд┐рдд рд╣реИрдВрдбрд▓рд░ рдХреЗ рдореВрд▓реНрдп рдХреЗ рд╕рд╛рде рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╛ рдореВрд▓ рдореВрд▓реНрдп рдпрджрд┐ рд╡рд╛рджрд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ (рдпрд╛рдиреА, рдпрджрд┐ рд╕рдВрдмрдВрдзрд┐рдд рдСрдирдлрд┐рд▓реНрдб рдпрд╛ рдСрдирд░рдХреЗрдб рд╣реИрдВрдбрд▓рд░ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдирд╣реАрдВ рд╣реИ)ред


рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ http рдЕрдиреБрд░реЛрдз рдмрдирд╛рдирд╛:
 const URL = "https://getfestivo.com/v1/holidays?api_key=f8f42551-eb66-49d2-bcba-b8e42727ddfb&country=US&year=2019"; //  API      function asyncHttpRequest (url) { return new Promise((resolve, reject) => { //  promise if (url == undefined) //     url reject(new Error("Expected url and received nothing")); else { resolve(() => { fetch(url).then((response) => { //   return response.json(); //    JSON   }).then((myJson) => { return(console.log(myJson)); //      }); }); } } );} asyncHttpRequest(URL).then((result) => result(), (error) => console.log(error)); 



рдЖрдк рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдореЗрдВ рдФрд░ рд╕рд╛рде рд╣реА рдореЛрдЬрд╝рд┐рд▓рд╛ рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рд╡рд╛рджреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЙрджрд╛рд╣рд░рдг рдФрд░ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ред

iterators


рдПрдХ рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдЖрдЗрдЯрдо рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдирд╛ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд╛рдорд╛рдиреНрдп рдСрдкрд░реЗрд╢рди рд╣реИред рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдПрдХ рд╕рдВрдЧреНрд░рд╣ рдкрд░ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рддрд░реАрдХреЗ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рд▓реВрдк рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рд╕реЗ рдорд╛рдирдЪрд┐рддреНрд░ (), рдлрд╝рд┐рд▓реНрдЯрд░ (), рдФрд░ рд╕рд░рдгреА рд╕рдордЭ рдХреЗ рд▓рд┐рдПред Iterators рдФрд░ рдЬрдирд░реЗрдЯрд░ рднрд╛рд╖рд╛ рдХреА рдХреЛрд░ рдореЗрдВ рд╕реАрдзреЗ рдЧрдгрдирд╛ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд▓реВрдкреНрд╕ рдХреЗ рд▓рд┐рдП рд╡реНрдпрд╡рд╣рд╛рд░ рдХреА рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рддрдВрддреНрд░ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред

рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдПрдХ рдЗрдЯрд░реЗрдЯрд░ рд╣реИ рдпрджрд┐ рд╡рд╣ рдЗрд╕ рдЕрдиреБрдХреНрд░рдо рдХреЗ рднреАрддрд░ рдЕрдкрдиреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рддреЗ рд╕рдордп, рд╕рдВрдЧреНрд░рд╣ рдХреЗ рддрддреНрд╡реЛрдВ рдХреЛ рдПрдХ рдмрд╛рд░ рдореЗрдВ рдПрдХреНрд╕реЗрд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ, рдПрдХ рдЗрдЯреНрд░реЗрдЯрд░ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИ рдЬреЛ рдПрдХ рдЕрдЧрд▓реА () рд╡рд┐рдзрд┐ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЕрдиреБрдХреНрд░рдо рдХреЗ рдЕрдЧрд▓реЗ рддрддреНрд╡ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╡рд┐рдзрд┐ рджреЛ рдЧреБрдгреЛрдВ рд╡рд╛рд▓реА рдПрдХ рд╡рд╕реНрддреБ рд▓реМрдЯрд╛рддреА рд╣реИ: рдХрд┐рдпрд╛ рдФрд░ рдореВрд▓реНрдпред

рдПрдХ рдмрд╛рд░ рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдЗрдЯреЗрд░реЗрдЯрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЕрдЧрд▓реА () рд╡рд┐рдзрд┐ рд╕реЗ рдХреЙрд▓ рдХрд░рдХреЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

Iterable - рдпрд╣ рдПрдХ рдРрд╕реА рд╡рд╕реНрддреБ рд╣реИ рдЬрд┐рд╕рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдЗрд╕рд╕реЗ рдЕрдзрд┐рдХ рдкреБрдирд░рд╛рд╡реГрддреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЪрд▓рдиреЗ рдпреЛрдЧреНрдп рд╡рд╕реНрддреБ рдЧреИрд░-рдЪрд▓рдиреЗ рдпреЛрдЧреНрдп рд╕реЗ рднрд┐рдиреНрди рд╣реЛрддреА рд╣реИ, рдЗрд╕рдореЗрдВ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╡рд┐рдзрд┐ рд╣реЛрддреА рд╣реИ рдЬреЛ рдХрд┐рд╕реА рд╡рд╕реНрддреБ рддрдХ рдкрд╣реБрдВрдЪ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реЗрд╖ рдкреНрд░рддреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИ: Symbol.iterator
 Iterable { [Symbol.iterator]() } 

рд╡рд┐рдзрд┐ рдЬреЛ рд╡рд╕реНрддреБ рд▓реМрдЯрд╛рддреА рд╣реИ, рдЙрд╕реЗ рдФрдкрдЪрд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдПрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдХ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЗрдЯреНрд░реЗрдЯрд░ рдХреА рд╕рд┐рд░реНрдл рдПрдХ рдЕрдЧрд▓реА () рд╡рд┐рдзрд┐ рд╣реИ
 Iterator { next(); } 

рдЬреЛ рджреЛ рдЧреБрдгреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд╕реНрддреБ рджреЗрддрд╛ рд╣реИ (рдЪрд▓реЛ рдЗрд╕реЗ itreratorResult рдХрд╣рддреЗ рд╣реИрдВ) рдФрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдЧреБрдг
 IteratorResult { done, value } 

рдХрд┐рдпрд╛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЕрдиреБрдХреНрд░рдо рдореЗрдВ рдХреЛрдИ рдорд╛рди рдЕрднреА рднреА рдЦреЛрдЬрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдорд╛рди рдореЗрдВ рдЕрдиреБрдХреНрд░рдо рдХрд╛ рдЕрдЧрд▓рд╛ рддрддреНрд╡ рд╣реИред


рдЖрд░рдВрднреАрдХрд░рдг рдХреЗ рдмрд╛рдж, рдЕрдЧрд▓реЗ () рд╡рд┐рдзрд┐ рдХреЛ рдХреБрдВрдЬреА-рдореВрд▓реНрдп рдЬреЛрдбрд╝реЗ рдХреЛ рдПрдХ-рдПрдХ рдХрд░рдХреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

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

рдЪрд▓рдиреЗ рдпреЛрдЧреНрдп рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рд╡рд┐рдзрд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдпрд╣ (рдпрд╛ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рд╕реЗ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ) рдХреЗ рдкрд╛рд╕ Symbol.iterator рдирд╛рдордХ рдПрдХ рд╕рдВрдкрддреНрддрд┐ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред

рдРрд╕рд╛ рдорд╛рдирдХ рдорд╛рдирдХ рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ:
 function makeIterator(array){ var nextIndex = 0; return { next: function(){ return nextIndex < array.length ? { value: array[nextIndex++], done: false } : { done: true }; } } } 


рдЬреЗрдирд░реЗрдЯрд░


рдЬрдирд░реЗрдЯрд░ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬреЛ рдПрдХ рдЗрдЯреНрд░реЗрдЯрд░ рдлреИрдХреНрдЯрд░реА рдХреА рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдлрд╝рдВрдХреНрд╢рди рдПрдХ рдЬрдирд░реЗрдЯрд░ рдмрди рдЬрд╛рддрд╛ рд╣реИ рдпрджрд┐ рдЗрд╕рдореЗрдВ рдПрдХ рдпрд╛ рдЕрдзрд┐рдХ рдЙрдкрдЬ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдлрд╝рдВрдХреНрд╢рди * рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред

рдЬрдирд░реЗрдЯрд░ рдПрдХ рдирдП рдкреНрд░рдХрд╛рд░ рдХрд╛ рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬреЛ рдЗрд╕рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рд░реЛрдХ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдПрдХ рдордзреНрдпрд╡рд░реНрддреА рдкрд░рд┐рдгрд╛рдо рд▓реМрдЯрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдмрд╛рдж рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрди рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдЖрдЗрдП рдПрдХ рдирд┐рдпрдорд┐рдд рдлрд╝рдВрдХреНрд╢рди рдХреЛ рджреЗрдЦреЗрдВ рдЬреЛ рдХреБрдЫ рдЧрдгрд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдПрдХ рдкрд░рд┐рдгрд╛рдо рджреЗрддрд╛ рд╣реИ:
 function myFunction (a) { a = a*2; a = a - 1; return a; } console.log(myFunction(5)); // 9 

рдЕрдм рдПрдХ рд╕рдорд╛рди рдЬрдирд░реЗрдЯрд░ рдлрд╝рдВрдХреНрд╢рди рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ:
 function* generator(a) { a = a*2; yield a; a = a - 1; yield a; } var it = generator(5); console.log(it.next().value); // 10 console.log(it.next().value); // 9</i> 

рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рдХрд╣рд╛ рдЧрдпрд╛ рдерд╛, рдЬрдирд░реЗрдЯрд░ рдЕрдкрдиреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рд░реЛрдХ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рдордзреНрдпрд╡рд░реНрддреА рдкрд░рд┐рдгрд╛рдо рд▓реМрдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдЙрджрд╛рд╣рд░рдг рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рдкрд╣рд▓реА рдХреЙрд▓ рдХреЗ рд╕рдордп, рдлрд╝рдВрдХреНрд╢рди рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ рдЬреИрд╕реЗ рдХрд┐ рдкрд╣рд▓реЗ рдмреНрд░реЗрдХрдкреЙрдЗрдВрдЯ рдЙрдкрдЬ рдкрд░ рдЗрд╕рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рдирд┐рд▓рдВрдмрд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдкрд╣рд▓реА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рджреЗрддрд╛ рд╣реИред рджреВрд╕рд░реЗ рдХреЙрд▓ рдореЗрдВ, рдлрд╝рдВрдХреНрд╢рди рдкрд┐рдЫрд▓реЗ рдмреНрд░реЗрдХрдкреЙрдЗрдВрдЯ рд╕реЗ рдЬрд╛рд░реА рд░рд╣рддрд╛ рд╣реИ рдФрд░ рдЕрдЧрд▓реЗ рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЛ рд▓реМрдЯрд╛рддрд╛ рд╣реИред

рдлрд╝рдВрдХреНрд╢рди рдЬрдирд░реЗрдЯрд░ рдЬрдЯрд┐рд▓ рдЕрдиреБрдХреНрд░рдорд┐рдХ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдЙрдкрдХрд░рдг рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред

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

рдЕрдЧрд▓реА () рд╡рд┐рдзрд┐ рдПрдХ рдорд╛рди рднреА рд▓реЗрддреА рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЬрдирд░реЗрдЯрд░ рдХреА рдЖрдВрддрд░рд┐рдХ рд╕реНрдерд┐рддрд┐ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЕрдЧрд▓реЗ () рдХреЛ рджрд┐рдП рдЧрдП рдорд╛рди рдХреЛ рдЕрдВрддрд┐рдо рдЙрдкрдЬ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдорд╛рдирд╛ рдЬрд╛рдПрдЧрд╛ рдЬрд┐рд╕рдиреЗ рдЬрдирд░реЗрдЯрд░ рдХреЛ рд░реЛрдХ рджрд┐рдпрд╛ред

рдЖрдк рдЬрдирд░реЗрдЯрд░ рдХреЛ рдЙрд╕рдХреЗ рдлреЗрдВрдХ () рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ рдПрдХ рдЕрдкрд╡рд╛рдж рдХреЛ рдлреЗрдВрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрд╕ рдорд╛рди рдХреЗ рдорд╛рди рдХреЛ рдкрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕ рдЕрдкрд╡рд╛рдж рдХреЛ рдЬрдирд░реЗрдЯрд░ рдХреЗ рд╡рд░реНрддрдорд╛рди рд░реБрдХреЗ рд╣реБрдП рд╕рдВрджрд░реНрдн рд╕реЗ рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬреИрд╕реЗ рдХрд┐ рд╡рд░реНрддрдорд╛рди рд░реБрдХрд╛ рд╣реБрдЖ рдЙрдкрдЬ рд╡рд┐рд╡рд░рдг рдПрдХ рдлреЗрдВрдХ рд╡рдХреНрддрд╡реНрдп рдерд╛ред

рдпрджрд┐ рдЙрдкрдЬ рдХрдерди рдлреЗрдВрдХрдиреЗ рд╡рд╛рд▓реЗ рдЕрдкрд╡рд╛рдж рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рджреМрд░рд╛рди рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЕрдкрд╡рд╛рдж рдХреЛ рдлреЗрдВрдХ () рдХреЙрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдКрдкрд░ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдмрд╛рдж рдореЗрдВ () рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╕рд╣реА рдХреЗ рдмрд░рд╛рдмрд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдЬреЗрдирд░реЗрдЯрд░ рдореЗрдВ рдПрдХ рд░рд┐рдЯрд░реНрди (рдорд╛рди) рд╡рд┐рдзрд┐ рд╣реЛрддреА рд╣реИ рдЬреЛ рджрд┐рдП рдЧрдП рдорд╛рди рдХреЛ рд▓реМрдЯрд╛рддреА рд╣реИ рдФрд░ рдЬрдирд░реЗрдЯрд░ рдХреЛ рд░реЛрдХрддреА рд╣реИред

рдкреНрд░рддреАрдХ


рдкреНрд░рддреАрдХ рдПрдХ рдЖрджрд┐рдо рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рд╣реИ рдЬрд┐рд╕рдХреЗ рдЙрджрд╛рд╣рд░рдг рдЕрджреНрд╡рд┐рддреАрдп рдФрд░ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╣реИрдВред

рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд░рдирдЯрд╛рдЗрдо рдореЗрдВ, рдкреНрд░рддреАрдХ () рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ рдПрдХ "рдкреНрд░рддреАрдХ" рдорд╛рди рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдПрдХ рдЕрдирд╛рдо рдФрд░ рдЕрджреНрд╡рд┐рддреАрдп рдореВрд▓реНрдп рдмрдирд╛рддрд╛ рд╣реИред рдПрдХрдорд╛рддреНрд░ рдЙрдЪрд┐рдд рдЙрдкрдпреЛрдЧ рдЪрд░рд┐рддреНрд░ рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ, рдФрд░ рдлрд┐рд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рд╕рдВрдкрддреНрддрд┐ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдЧреНрд░рд╣реАрдд рдореВрд▓реНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

рдЬрдм рдПрдХ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдореЗрдВ рдПрдХ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдЪрд░рд┐рддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╕рдВрдкрддреНрддрд┐ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдЪрд░рд┐рддреНрд░) рдЧреБрдордирд╛рдо рд╣реЛрддреА рд╣реИ; рдФрд░ рднреА рдЧрд┐рдирдиреЗ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реИред рдЪреВрдВрдХрд┐ рд╕рдВрдкрддреНрддрд┐ рдХрдореНрдкреНрдпреВрдЯреЗрд╢рдирд▓ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ "for (... рдореЗрдВ ...)" рд▓реВрдк рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдФрд░ рдЪреВрдВрдХрд┐ рдкреНрд░реЙрдкрд░реНрдЯреА рдмреЗрдирд╛рдореА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ "Object.getOwnPropertyNames ()" рдкрд░рд┐рдгрд╛рдо рд╕рд░рдгреА рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕ рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдкреНрд░рддреАрдХ рдХреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдореВрд▓реНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╛ рдкрд░рд┐рдгрд╛рдо рд╕рд░рдгреА "Object.getOwnPropertySymbols ()" рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХрд░рдХреЗред


рддреЛ рдЖрдк рдПрдХ рдЪрд░рд┐рддреНрд░ рд╕рдВрдкрддреНрддрд┐ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ:
 var user = { name: "Alex", [Symbol("password")]: "12hsK3I" } 

рд╡рд░реНрдг рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреА рдПрдХ рд╕рд░рдгреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, Object.getOwnPropertySymbols (obj) рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ;
рдЕрдкрдиреЗ рдХреЛрдб рдореЗрдВ рдХрд╣реАрдВ рднреА рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, Symbol.for () рдФрд░ Symbol.keyFor () рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

Sumbol рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП, рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рджреЗрдЦреЗрдВ , рдФрд░ рдореЛрдЬрд╝рд┐рд▓рд╛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рднреА ред

Source: https://habr.com/ru/post/hi460741/


All Articles