рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЧрд╛рдЗрдб рднрд╛рдЧ 8: ES6 рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдЕрд╡рд▓реЛрдХрди

рдЖрдЬ, рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореИрдиреБрдЕрд▓ рдХреЗ рдЕрдиреБрд╡рд╛рдж рдХреЗ рдЖрдард╡реЗрдВ рднрд╛рдЧ рдореЗрдВ, рд╣рдо рдЙрд╕ рднрд╛рд╖рд╛ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХрд░реЗрдВрдЧреЗ рдЬреЛ ES6 рдорд╛рдирдХ рдХреЗ рд░рд┐рд▓реАрдЬ рдХреЗ рдмрд╛рдж рдЙрд╕рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреА рдереАред рдПрдХ рддрд░рд╣ рд╕реЗ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп, рд╣рдо рдЗрдирдореЗрдВ рд╕реЗ рдХрдИ рдЕрд╡рд╕рд░реЛрдВ рд╕реЗ рдкрд╣рд▓реЗ рдЖ рдЪреБрдХреЗ рд╣реИрдВ, рдХрд╣реАрдВ рди рдХрд╣реАрдВ рдЙрди рдкрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ, рдХрд╣реАрдВ рди рдХрд╣реАрдВ рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдПред рдЧрд╛рдЗрдб рдХреЗ рдЗрд╕ рдЦрдВрдб рдХрд╛ рдЗрд░рд╛рджрд╛ рдХреБрдЫ рд╡рд┐рд╖рдпреЛрдВ рдХреЗ рдкреНрд░рдХрдЯреАрдХрд░рдг рдХреЗ рд╕рд╛рде рд╣реИ, рдЬрд┐рд╕реЗ рд╣рдордиреЗ рдкрд╣рд▓реЗ рдирд╣реАрдВ рдЫреБрдЖ рд╣реИ, рдЖрдзреБрдирд┐рдХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдПрдХ рдиреМрд╕рд┐рдЦрд┐рдпрд╛ рдбреЗрд╡рд▓рдкрд░ рдХреЗ рдЬреНрдЮрд╛рди рдХреЛ рдХрд╛рд░рдЧрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдПред

тЖТ рднрд╛рдЧ 1: рдкрд╣рд▓рд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо, рднрд╛рд╖рд╛ рд╕реБрд╡рд┐рдзрд╛рдПрдБ, рдорд╛рдирдХ
тЖТ рднрд╛рдЧ 2: рдХреЛрдб рд╢реИрд▓реА рдФрд░ рдХрд╛рд░реНрдпрдХреНрд░рдо рд╕рдВрд░рдЪрдирд╛
тЖТ рднрд╛рдЧ 3: рдЪрд░, рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░, рднрд╛рд╡, рд╡рд╕реНрддреБ
тЖТ рднрд╛рдЧ 4: рд╕реБрд╡рд┐рдзрд╛рдПрдБ
тЖТ рднрд╛рдЧ 5: рд╕рд░рдгрд┐рдпрд╛рдБ рдФрд░ рд▓реВрдк
тЖТ рднрд╛рдЧ 6: рдЕрдкрд╡рд╛рдж, рдЕрд░реНрдзрд╡рд┐рд░рд╛рдо, рд╡рд╛рдЗрд▓реНрдбрдХрд╛рд░реНрдб рд╢рд╛рдмреНрджрд┐рдХ
тЖТ рднрд╛рдЧ 7: рд╕рдЦреНрдд рдореЛрдб, рдпрд╣ рдХреАрд╡рд░реНрдб, рдШрдЯрдирд╛рдУрдВ, рдореЙрдбреНрдпреВрд▓, рдЧрдгрд┐рддреАрдп рдЧрдгрдирд╛
тЖТ рднрд╛рдЧ 8: ES6 рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдЕрд╡рд▓реЛрдХрди
тЖТ рднрд╛рдЧ 9: ES7, ES8 рдФрд░ ES9 рдорд╛рдирдХреЛрдВ рдХрд╛ рдЕрд╡рд▓реЛрдХрди



ES6 рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ


ES6 рдорд╛рдирдХ, рдЬреЛ ES2015 рдпрд╛ ECMAScript 2015 рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╕рд╣реА рд╣реЛрдЧрд╛ (рдпреЗ рдЗрд╕рдХреЗ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдирд╛рдо рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╣рд░ рдХреЛрдИ рдЗрд╕реЗ ES6 рдХрд╣рддрд╛ рд╣реИ), рдкрд┐рдЫрд▓реЗ рдорд╛рдирдХ - ES5.1 рдХреА рд░рд┐рд▓реАрдЬ рдХреЗ 4 рд╕рд╛рд▓ рдмрд╛рдж рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ред ES5.1 рдорд╛рдирдХ рдореЗрдВ рдЪрд▓реЗ рдЧрдП рд╕рдм рдХреБрдЫ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд▓рдЧрднрдЧ рджрд╕ рд╕рд╛рд▓ рд▓рдЧ рдЧрдПред рдЖрдЬрдХрд▓, рдЗрд╕ рдорд╛рдирдХ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рд╡рд╛рд▓реА рд╕рднреА рдЪреАрдЬреЗрдВ рдЬреЗрдПрд╕ рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рдЙрдкрдХрд░рдг рдмрди рдЧрдП рд╣реИрдВред рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдИрдПрд╕ 6 рдиреЗ рднрд╛рд╖рд╛ рдореЗрдВ рдмрдбрд╝реЗ рдмрджрд▓рд╛рд╡ рдХрд┐рдП (рдЬрдмрдХрд┐ рдЗрд╕рдХреЗ рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдкрд┐рдЫрдбрд╝реЗ рд╕рдВрдЧрддрддрд╛ рдХреЛ рдмрдирд╛рдП рд░рдЦрд╛ рд╣реИ)ред рдЗрди рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреА рднрдпрд╛рд╡рд╣рддрд╛ рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ ES5 рдорд╛рдирдХ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХрд╛ рдЖрдХрд╛рд░ рд▓рдЧрднрдЧ 250 рдкреГрд╖реНрда рд╣реИ, рдФрд░ рдорд╛рдирдХ ES6 рдХрд╛ рд╡рд░реНрдгрди рдПрдХ рдРрд╕реЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд▓рдЧрднрдЧ 600 рдкреГрд╖реНрда рд╣реИрдВред

ES2015 рдорд╛рдирдХ рдХреЗ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╡рд╛рдЪрд╛рд░реЛрдВ рдХреА рд╕реВрдЪреА рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╢рд╛рдорд┐рд▓ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ:

  • рддреАрд░ рдХрд╛рд░реНрдп
  • рд╡рд╛рджрд╛
  • рдЬрдирд░реЗрдЯрд░
  • рдХреАрд╡рд░реНрдб let рдФрд░ const
  • рдХрдХреНрд╖рд╛рдПрдВ
  • рдореЙрдбреНрдпреВрд▓
  • рд╕рд╛рдБрдЪрд╛ рд╕рд╛рдХреНрд╖рд░ рд╕рдорд░реНрдерди
  • рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдлрд╝рдВрдХреНрд╢рди рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди
  • рдлреИрд▓рд╛ рд╣реБрдЖ рд╕рдВрдЪрд╛рд▓рдХ
  • рд╡рд┐рдирд╛рд╢рдХрд╛рд░реА рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ
  • рд╡рд╕реНрддреБ рд╕рд╛рд╣рд┐рддреНрдп рдХреЛ рдмрдврд╝рд╛рдирд╛
  • for...of рдкрд╛рд╢ рдХреА
  • Map рдФрд░ Set рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди

рдЗрди рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред

рддреАрд░ рдХрд╛рд░реНрдп


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

 const foo = function foo() { //... } 

рд▓реЗрдХрд┐рди рд▓рдЧрднрдЧ рд╕рдорд╛рди (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЙрдкрд░реЛрдХреНрдд рдХреЗ рд╕рдорд╛рди рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирд╣реАрдВ) рддреАрд░ рдлрд╝рдВрдХреНрд╢рдиред

 const foo = () => { //... } 

рдпрджрд┐ рддреАрд░ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╢рд░реАрд░ рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдкрдВрдХреНрддрд┐ рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рд╡рд╛рдкрд╕ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рддреЛ рдЗрд╕реЗ рдФрд░ рднреА рдЫреЛрдЯрд╛ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред

 const foo = () => doSomething() 

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

 const foo = param => doSomething(param) 

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

рдПрд░реЛ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдореЗрдВ рдпрд╣ рдХреАрд╡рд░реНрдб рд╕реБрд╡рд┐рдзрд╛рдПрдБ


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

рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП, рдирд┐рдпрдорд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, var that = this рдЬреИрд╕реЗ рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛ var that = this рд╕рдВрджрд░реНрдн рдХреЛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЬреИрд╕рд╛ рдХрд┐ рдореИрдиреБрдЕрд▓ рдХреЗ рдкрд┐рдЫрд▓реЗ рд╣рд┐рд╕реНрд╕реЛрдВ рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рдпрд╣ рдкрд░рд┐рд╡рд░реНрддрди рддреАрд░ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдФрд░ рдЙрдирдХреЗ рдЖрд╡реЗрджрди рдХреЗ рджрд╛рдпрд░реЗ рдХреЛ рдЧрдВрднреАрд░рддрд╛ рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИред

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


рд╡рд╛рджреЗ рдЖрдкрдХреЛ "рдХреЙрд▓рдмреИрдХ рдирд░рдХ" рдирд╛рдордХ рдкреНрд░рд╕рд┐рджреНрдз рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдЬрдЯрд┐рд▓ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдХрд╛ рдЕрд░реНрде рд╣реИред рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдПрд╕реНрдЗрдВрдХреНрд╕ / рд╡реЗрдЯ рдирд┐рд░реНрдорд╛рдг рдХреЗ рдЖрдЧрдорди рдХреЗ рд╕рд╛рде ES2017 рдорд╛рдирдХ рдореЗрдВ рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬреЛ рд╡рд╛рджреЛрдВ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред

рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ ES2015 рдХреЗ рдорд╛рдирдХ рдХреЗ рд╕рд╛рдордиреЗ рдЖрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╡рд╛рджреЛрдВ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛, рдЗрд╕рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП - jQuery, q, deferred.js, рд╕реНрд╡рд░)ред рдпрд╣ рдЗрд╕ рддрдВрддреНрд░ рдХреЗ рдорд╣рддреНрд╡ рдФрд░ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХрддрд╛ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред рд╡рд┐рднрд┐рдиреНрди рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЗрд╕реЗ рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЛрдВ рд╕реЗ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдПрдХ рдорд╛рдирдХ рдХреЗ рдЙрджреНрднрд╡ рдХреЛ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рдХрд╛рд░рд╛рддреНрдордХ рддрдереНрдп рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдпрд╣рд╛рдВ рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рдВрд╕ (рдХреЙрд▓рдмреИрдХ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЛрдб рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред

 setTimeout(function() { console.log('I promised to run after 1s') setTimeout(function() {   console.log('I promised to run after 2s') }, 1000) }, 1000) 

рд╡рд╛рджреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдЗрд╕реЗ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

 const wait = () => new Promise((resolve, reject) => { setTimeout(resolve, 1000) }) wait().then(() => { console.log('I promised to run after 1s') return wait() }) .then(() => console.log('I promised to run after 2s')) 

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


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

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

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

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

рдЬрдирд░реЗрдЯрд░ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рджрд░реНрд╢рд╛рдиреЗ рд╡рд╛рд▓реЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдпрд╣рд╛рдБ рдкрд░ рд╣реА рдЬрдирд░реЗрдЯрд░ рд╣реИред

 function *calculator(input) {   var doubleThat = 2 * (yield (input / 2))   var another = yield (doubleThat)   return (input * doubleThat * another) } 

рдЗрд╕ рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рд╣рдо рдЗрд╕реЗ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рддреЗ рд╣реИрдВред

 const calc = calculator(10) 

рдлрд┐рд░ рд╣рдо рдЗрд╕рдХреЗ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреА рдУрд░ рдореБрдбрд╝рддреЗ рд╣реИрдВред

 calc.next() 

рдпрд╣ рдХрдорд╛рдВрдб рдПрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рдЗрд╕ рддрд░рд╣ рдХреА рд╡рд╕реНрддреБ рдХреЛ рд▓реМрдЯрд╛рддрд╛ рд╣реИред

 { done: false value: 5 } 

рдпрд╣рд╛рдБ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реЛрддрд╛ рд╣реИред рдЬрдирд░реЗрдЯрд░ рдЬрдирд░реЗрдЯрд░ рдХреЛ рджрд┐рдП рдЧрдП input рдореВрд▓реНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЛрдб рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИред рдЬрдирд░реЗрдЯрд░ рдХреЛрдб рддрдм рддрдХ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ yield рдХреАрд╡рд░реНрдб рдирд╣реАрдВ рдорд┐рд▓рддрд╛ рд╣реИред рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░, рдпрд╣ 2 input рдХреЛ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рджреЗрддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ input 10 , 5 рдирдВрдмрд░ рджреЗрддрд╛ рд╣реИред рд╣рдореЗрдВ рдпрд╣ рд╕рдВрдЦреНрдпрд╛ рдЗрдЯреНрд░реЗрдЯрд░ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж рдорд┐рд▓рддреА рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде, рдПрдХ рд╕рдВрдХреЗрдд рд╣реИ рдХрд┐ рдЬрдирд░реЗрдЯрд░ рдЕрднреА рддрдХ рдкреВрд░рд╛ рдирд╣реАрдВ рд╣реБрдЖ рд╣реИ (рдЗрдЯреНрд░реЗрдЯрд░ рджреНрд╡рд╛рд░рд╛ рд▓реМрдЯрд╛рдП рдЧрдП рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ done рдЧреБрдг false рд╕реЗрдЯ рд╣реИ), рдЕрд░реНрдерд╛рдд, рдлрд╝рдВрдХреНрд╢рди рдХреЗрд╡рд▓ рдирд┐рд▓рдВрдмрд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдЕрдЧрд▓реА рдмрд╛рд░ рдЬрдм рдЗрдЯрд░реЗрдЯрд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рдо рдЬрдирд░реЗрдЯрд░ рдХреЛ 7 рдирдВрдмрд░ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред

 calc.next(7) 

рдЗрд╕рдХреЗ рдЬрд╡рд╛рдм рдореЗрдВ, рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдХрд░реНрддрд╛ рд╣рдореЗрдВ рдЕрдЧрд▓реА рд╡рд╕реНрддреБ рд▓реМрдЯрд╛рддрд╛ рд╣реИред

 { done: false value: 14 } 

рдпрд╣рд╛рдВ, doubleThat рдорд╛рди рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 7 рдирдВрдмрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ, рдРрд╕рд╛ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ input / 2 рдХреЛрдб рдХреБрдЫ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рддрд░реНрдХ рдХреА рддрд░рд╣ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХреЗрд╡рд▓ рдкрд╣рд▓реА рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдкрд░ рд▓реМрдЯрд╛рдпрд╛ рдЧрдпрд╛ рдорд╛рди рд╣реИред рдпрд╣рд╛рдВ рд╣рдо рдЗрд╕ рдорд╛рди рдХреЛ рдЫреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВ рдФрд░ рдирдП рдЗрдирдкреБрдЯ рдорд╛рди 7 рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕реЗ 2 рдЧреБрдгрд╛ рдХрд░рддреЗ рд╣реИрдВред рдЙрд╕рдХреЗ рдмрд╛рдж, рд╣рдо рджреВрд╕рд░реЗ yield рдХреАрд╡рд░реНрдб рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВ, рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рджреВрд╕рд░реА рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдореВрд▓реНрдп 14 ред

рдЕрдЧрд▓реЗ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдкрд░, рдЬреЛ рдЕрдВрддрд┐рдо рд╣реИ, рд╣рдо рдЬрдирд░реЗрдЯрд░ рдХреЛ 100 рдирдВрдмрд░ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред

 calc.next(100) 

рдЬрд╡рд╛рдм рдореЗрдВ, рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд╕реНрддреБ рдорд┐рд▓рддреА рд╣реИред

 { done: true value: 14000 } 

рдкреБрдирд░рд╛рд╡реГрддрд┐ рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИ ( yield рдХреАрд╡рд░реНрдб рдЕрдм рдЬрдирд░реЗрдЯрд░ рдореЗрдВ рдирд╣реАрдВ рдкрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ), рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдиреЗ рдХрд╛ рдкрд░рд┐рдгрд╛рдо (input * doubleThat * another) рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рд▓реМрдЯрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╡рд╣ рд╣реИ - 10 * 14 * 100 рдФрд░ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХрд╛ рд╕рдВрдХреЗрдд рд╕реВрдЪрдХ ( done: true )ред

рдХреАрд╡рд░реНрдб рджреЗрдВ рдФрд░ рдХрд╛рд╕реНрдЯ рдХрд░реЗрдВ


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

рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рд▓реВрдк рдореЗрдВ let рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдПрдХ рдЖрдЗрдХреЙрди if рдмреНрд▓реЙрдХ рдХреЗ рдЕрдВрджрд░, рдпрд╛ рдШреБрдВрдШрд░рд╛рд▓реЗ рдмреНрд░реЗрд╕рд┐рдЬрд╝ рджреНрд╡рд╛рд░рд╛ рд╕реАрдорд┐рдд рдПрдХ рдирд┐рдпрдорд┐рдд рдХреЛрдб рдмреНрд▓реЙрдХ рдХреЗ рдЕрдВрджрд░, рдЗрд╕ рдмреНрд▓реЙрдХ рд╕реЗ рдЖрдЧреЗ рдирд╣реАрдВ рдЬрд╛рдПрдЧрд╛ред var рд╕рд╛рде рдШреЛрд╖рд┐рдд рдЪрд░ рдХреЛ рдРрд╕реЗ рдмреНрд▓реЙрдХреЛрдВ рдореЗрдВ рдЖрдпреЛрдЬрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рд╡реЗ рдШреЛрд╖рд┐рдд рдХрд┐рдП рдЧрдП рд╕реНрддрд░ рдкрд░ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реЛрддреЗ рд╣реИрдВред

const рдХреАрд╡рд░реНрдб let рддрд░рд╣ рд╣реА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд╕рд╛рде, рд╕реНрдерд┐рд░рд╛рдВрдХ рдЬреЛ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╣реЛрддреЗ рд╣реИрдВ, рдШреЛрд╖рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред

рдЖрдзреБрдирд┐рдХ JS рдХреЛрдб рдореЗрдВ, var рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рд╢рд╛рдпрдж рд╣реА рдХрднреА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдиреЗ let рдФрд░ const рдХреАрд╡рд░реНрдб рдХреЛ рд░рд╛рд╕реНрддрд╛ рджрд┐рдпрд╛ред рдЙрд╕реА рд╕рдордп, рдЬреЛ рдЕрд╕рд╛рдорд╛рдиреНрдп рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ, const рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрдЬ рдмрд╣реБрдд рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдЖрдзреБрдирд┐рдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдореЗрдВ рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреА рдкреНрд░рддрд┐рд░рдХреНрд╖рд╛ рдХреЗ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреА рд▓реЛрдХрдкреНрд░рд┐рдпрддрд╛ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред

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


рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╡рд┐рд░рд╛рд╕рдд рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдПрдХрдорд╛рддреНрд░ рдЕрддреНрдпрдВрдд рд╡реНрдпрд╛рдкрдХ рднрд╛рд╖рд╛ рдереАред рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдЬреЗрдПрд╕ рдХреЛ рдЙрди рднрд╛рд╖рд╛рдУрдВ рд╕реЗ рд╕реНрд╡рд┐рдЪ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ рдХреНрд▓рд╛рд╕-рдЖрдзрд╛рд░рд┐рдд рд╡рд┐рд░рд╛рд╕рдд рддрдВрддреНрд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ, рдРрд╕реЗ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдЕрд╕рд╣рдЬ рдорд╣рд╕реВрд╕ рдХрд░рддреЗ рд╣реИрдВред ES2015 рдорд╛рдирдХ рдиреЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╡рд░реНрдЧ рд╕рдорд░реНрдерди рдкреЗрд╢ рдХрд┐рдпрд╛ред рдпрд╣ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдЬреЗрдПрд╕ рдЖрдВрддрд░рд┐рдХ рддрдВрддреНрд░ рдХреЗ рдЖрд╕рдкрд╛рд╕ "рд╕рд┐рдВрдЯреИрдХреНрдЯрд┐рдХ рд╢реБрдЧрд░" рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЬреЗрдПрд╕ рдЖрд╡реЗрджрди рдХреИрд╕реЗ рд▓рд┐рдЦрддреЗ рд╣реИрдВред

рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрдирд╣реЗрд░рд┐рдЯреЗрдВрд╕ рдореИрдХреЗрдирд┐рдЬреНрдо рдЕрдм рдЕрдиреНрдп рдСрдмреНрдЬреЗрдХреНрдЯ-рдУрд░рд┐рдПрдВрдЯреЗрдб рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рд╕рдорд╛рди рддрдВрддреНрд░ рдХреА рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИред

 class Person { constructor(name) {   this.name = name } hello() {   return 'Hello, I am ' + this.name + '.' } } class Actor extends Person { hello() {   return super.hello() + ' I am an actor.' } } var tomCruise = new Actor('Tom Cruise') console.log(tomCruise.hello()) 

рдпрд╣ рдХрд╛рд░реНрдпрдХреНрд░рдо рдкрд╛рда рдХреЛ Hello, I am Tom Cruise. I am an actor рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ Hello, I am Tom Cruise. I am an actor рдХрдВрд╕реЛрд▓ Hello, I am Tom Cruise. I am an actor Hello, I am Tom Cruise. I am an actor ред
рдЬреЗрдПрд╕ рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ, рдЙрджрд╛рд╣рд░рдг рдЪрд░ рдШреЛрд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ, рдЙрдиреНрд╣реЗрдВ рдирд┐рд░реНрдорд╛рдгрдХрд░реНрддрд╛рдУрдВ рдореЗрдВ рдЖрд░рдВрднреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╡рд░реНрдЧ рдирд┐рд░реНрдорд╛рддрд╛


рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╡рд┐рдзрд┐, constructor рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рддрдм рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм new рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрдХреНрд╖рд╛ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

Super рдХреАрд╡рд░реНрдб рд╕реБрдкрд░


super рдХреАрд╡рд░реНрдб рдЖрдкрдХреЛ рдореВрд▓ рд╡рд░реНрдЧ рдХреЛ рд╡рдВрд╢рдЬ рдХрдХреНрд╖рд╛рдУрдВ рд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

Sett рдЧреЗрдЯрд░реНрд╕ рдПрдВрдб рд╕реЗрдЯрд░реНрд╕


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

 class Person { get fullName() {   return `${this.firstName} ${this.lastName}` } } 

рд╕реЗрдЯрд░ рдХреЛ рдиреАрдЪреЗ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред

 class Person { set age(years) {   this.theAge = years } } 

рд╡реЗ рдЧреЗрдЯрд░реНрд╕ рдФрд░ рд╕реЗрдЯрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ рдЬреИрд╕реЗ рдХрд┐ рд╡реЗ рдХрд╛рд░реНрдп рдирд╣реАрдВ рдереЗ, рд▓реЗрдХрд┐рди рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рдЧреБрдгред

рдореЙрдбреНрдпреВрд▓


ES2015 рдорд╛рдирдХ рд╕реЗ рдкрд╣рд▓реЗ, рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзреА рджреГрд╖реНрдЯрд┐рдХреЛрдг рдереЗред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рд╣рдо RequJS рдФрд░ CommonJS рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдиреЗ рдЬреЗрдПрд╕ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд╕рдореБрджрд╛рдп рдореЗрдВ рдЕрд╕рд╣рдорддрд┐ рдкреИрджрд╛ рдХреАред

рдЖрдЬрдХрд▓, ES2015 рдореЗрдВ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдорд╛рдирдХреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рд╕реНрдерд┐рддрд┐ рдзреАрд░реЗ-рдзреАрд░реЗ рд╕рд╛рдорд╛рдиреНрдп рд╣реЛ рд░рд╣реА рд╣реИред

тЦН рдЖрдпрд╛рдд рдореЙрдбреНрдпреВрд▓


рдореЙрдбреНрдпреВрд▓ рдЖрдпрд╛рдд рдХреЗ рдПрдХ рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ import...from... рдпрд╣рд╛рдБ рдХреБрдЫ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВред

 import * as something from 'mymodule' import React from 'react' import { React, Component } from 'react' import React as MyLibrary from 'react' 

Modules рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдирд┐рд░реНрдпрд╛рдд


рдореЙрдбреНрдпреВрд▓ рдХреЗ рдЖрдВрддрд░рд┐рдХ рддрдВрддреНрд░ рдмрд╛рд╣рд░реА рджреБрдирд┐рдпрд╛ рд╕реЗ рдмрдВрдж рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореЙрдбреНрдпреВрд▓ рд╕реЗ рдЖрдк рд╡рд╣ рд╕рдм рдХреБрдЫ рдирд┐рд░реНрдпрд╛рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдпрд╣ рдЕрдиреНрдп рдореЙрдбреНрдпреВрд▓ рдХреА рдкреЗрд╢рдХрд╢ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ export рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

 export var foo = 2 export function bar() { /* ... */ } 

Als рдЦрд╛рдХрд╛ рд╢рд╛рдмреНрджрд┐рдХ


рдЯреЗрдореНрдкрд▓реЗрдЯ рд╢рд╛рдмреНрджрд┐рдХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рддрд╛рд░ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдирдпрд╛ рддрд░реАрдХрд╛ рд╣реИред рдпрд╣рд╛рдБ рд╣реИ рдХрд┐ рдпрд╣ рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИред

 const aString = `A string` 

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЯреЗрдореНрдкрд▓реЗрдЯ рд╢рд╛рдмреНрджрд┐рдХ рдХреЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдк рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдПрдореНрдмреЗрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдкреНрд░рдХреНрд╖реЗрдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдлреЙрд░реНрдо ${a_variable} рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣рд╛рдБ рдЗрд╕рдХреЗ рдЙрдкрдпреЛрдЧ рдХрд╛ рдПрдХ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рд╣реИ:

 const v = 'test' const str = `something ${v}` //something test 

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

 const str = `something ${1 + 2 + 3}` const str2 = `something ${foo() ? 'x' : 'y' }` 

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

 const str3 = `Hey this string is awesome!` 

ES2015 рд╕реЗ рдкрд╣рд▓реЗ рднрд╛рд╖рд╛ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдорд▓реНрдЯреА-рд▓рд╛рдЗрди рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдЬреЛ рдХрд░рдирд╛ рдерд╛, рдЙрд╕рд╕реЗ рдЗрд╕рдХреА рддреБрд▓рдирд╛ рдХрд░реЗрдВред

 var str = 'One\n' + 'Two\n' + 'Three' 

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


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

 const foo = function(index = 0, testing = true) { /* ... */ } foo() 

рдлреИрд▓рд╛ рд╣реБрдЖ рд╕рдВрдЪрд╛рд▓рдХ


рдкреНрд░рд╕рд╛рд░ рдСрдкрд░реЗрдЯрд░ (рд╡рд┐рд╕реНрддрд╛рд░ рдСрдкрд░реЗрдЯрд░) рдЖрдкрдХреЛ рд╕рд░рдгрд┐рдпреЛрдВ, рд╡рд╕реНрддреБрдУрдВ рдпрд╛ рддрд╛рд░реЛрдВ рдХрд╛ "рд╡рд┐рд╕реНрддрд╛рд░" рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрд╣ рдСрдкрд░реЗрдЯрд░ рддреАрди рдбреЙрдЯреНрд╕ ( ... ) рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИред рдкрд╣рд▓реЗ, рдЗрд╕реЗ рдПрдХ рд╕рд░рдгреА рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред

 const a = [1, 2, 3] 

рдЗрд╕ рд╕рд░рдгреА рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рдирдИ рд╕рд░рдгреА рдмрдирд╛рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдпрд╣рд╛рдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред

 const b = [...a, 4, 5, 6] 

рдпрд╣рд╛рдВ рдРрд░реЗ рдХреА рдХреЙрдкреА рдХреИрд╕реЗ рдмрдирд╛рдПрдВред

 const c = [...a] 

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

 const newObj = { ...oldObj } 

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

 const hey = 'hey' const arrayized = [...hey] // ['h', 'e', 'y'] 

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

 const f = (foo, bar) => {} const a = [1, 2] f(...a) 

рдкрд╣рд▓реЗ, рдпрд╣ f.apply(null, a) рдлреЙрд░реНрдо рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЗрд╕ рддрд░рд╣ рдХреЗ рдХреЛрдб рдХреЛ рд▓рд┐рдЦрдирд╛ рдЕрдзрд┐рдХ рдХрдард┐рди рд╣реИ, рдФрд░ рдпрд╣ рдХрдо рдкрдардиреАрдп рд╣реИред

рд╡рд┐рдирд╛рд╢рдХрд╛рд░реА рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ


рд╡рд┐рдирд╛рд╢рдХрд╛рд░реА рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рддрдХрдиреАрдХ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рд╡рд╕реНрддреБ рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕рдореЗрдВ рд╕реЗ рдХреБрдЫ рдорд╛рди рдирд┐рдХрд╛рд▓реЗрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдирд╛рдорд┐рдд рдЪрд░ рдпрд╛ рд╕реНрдерд┐рд░рд╛рдВрдХ рдореЗрдВ рдбрд╛рд▓ рджреЗрдВред

 const person = { firstName: 'Tom', lastName: 'Cruise', actor: true, age: 54, } const {firstName: name, age} = person 

рдпрд╣рд╛рдБ, firstName рдФрд░ age рдЧреБрдг рд╡рд╕реНрддреБ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреЗ рд╣реИрдВред рдПрдХ рд╣реА рдирд╛рдо рдХреЗ рд╕рд╛рде рдирд┐рд░рдВрддрд░ рдШреЛрд╖рд┐рдд рдХреА рдЧрдИ age рд╕рдВрдкрддреНрддрд┐ рдХреЛ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ firstName рд╕рдВрдкрддреНрддрд┐, рдирд┐рд╖реНрдХрд░реНрд╖рдг рдХреЗ рдмрд╛рдж, рдирд┐рд░рдВрддрд░ name ред

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

 const a = [1,2,3,4,5] const [first, second, , , fifth] = a 

first , second рдФрд░ fifth рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЛ рдХреНрд░рдорд╢рдГ рд╕рд░рдгреА рдХреЗ рдкрд╣рд▓реЗ, рджреВрд╕рд░реЗ рдФрд░ рдкрд╛рдВрдЪрд╡реЗрдВ рддрддреНрд╡ рдорд┐рд▓рддреЗ рд╣реИрдВред

рд╡рд╕реНрддреБ рд╕рд╛рд╣рд┐рддреНрдп рдХреЛ рдмрдврд╝рд╛рдирд╛


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

Inc рд╡рд╕реНрддреБрдУрдВ рдореЗрдВ рдЪрд░ рдХреЗ рд╕рдорд╛рд╡реЗрд╢ рдХрд╛ рд╕рд░рд▓реАрдХрд░рдг


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

 const something = 'y' const x = { something: something } 

рдЕрдм рдРрд╕рд╛ рд╣реА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

 const something = 'y' const x = { something } 

Es рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк


рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдЕрдм рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

 const anObject = { y: 'y' } const x = { __proto__: anObject } 

Super рдХреАрд╡рд░реНрдб рд╕реБрдкрд░


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

 const anObject = { y: 'y', test: () => 'zoo' } const x = { __proto__: anObject, test() {   return super.test() + 'x' } } x.test() //zoox 

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


рдСрдмреНрдЬреЗрдХреНрдЯ рдкреНрд░реЙрдкрд░реНрдЯреА рдХреЗ рдЪрд░рдг рдореЗрдВ рдХрдВрдкреНрдпреВрдЯреЗрдб рдкреНрд░реЙрдкрд░реНрдЯреА рдХреЗ рдирд╛рдо рдмрдиреЗ рд╣реИрдВред

 const x = { ['a' + '_' + 'b']: 'z' } x.a_b //z 

рдХреЗ рд▓рд┐рдП ... рдкрд╛рд╢ рдХреА


2009 рдореЗрдВ, forEach() рдорд╛рдирдХ рдореЗрдВ, forEach() рд▓реВрдк рджрд┐рдЦрд╛рдИ рджрд┐рдПред рдпрд╣ рдПрдХ рдЙрдкрдпреЛрдЧреА рдбрд┐рдЬрд╛рдЗрди рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдиреБрдХрд╕рд╛рди рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рдЪрдХреНрд░реЛрдВ рдХреЛ рдмрд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред рд▓реВрдк рдХреЗ for рдХреНрд▓рд╛рд╕рд┐рдХ рдЙрди рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдЬрд╣рд╛рдВ рдЖрдкрдХреЛ рд▓реВрдк рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рдмрд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЗрд╕рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рдкреВрд░реНрдг рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рдЕрдзрд┐рдХ рдЙрдкрдпреБрдХреНрдд рд╡рд┐рдХрд▓реНрдк рд╣реИред

ES2015 рдореЗрдВ рдЪрдХреНрд░ рдХреЗ for...of рдПрдХ for...of рдкреНрд░рдХрдЯ рд╣реБрдЖ рд╣реИ, рдЬреЛ рдПрдХ рддрд░рдл, рдЕрдкрдиреЗ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╕рд┐рдВрдЯреИрдХреНрд╕ рдФрд░ рд╕реБрд╡рд┐рдзрд╛ forEach рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рд╖реНрдард┐рдд рд╣реИ, рдФрд░ рджреВрд╕рд░реА рдУрд░, рдпрд╣ рдЪрдХреНрд░ рд╕реЗ рдЬрд▓реНрджреА рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред

рдпрд╣рд╛рдБ рдкрд╛рд╢ рдЙрджрд╛рд╣рд░рдг рдХреЗ for...of рдПрдХ рдЬреЛрдбрд╝реЗ рд╣реИрдВред

 //    for (const v of ['a', 'b', 'c']) { console.log(v); } //           entries() for (const [i, v] of ['a', 'b', 'c'].entries()) { console.log(i, v); } 

рдорд╛рдирдЪрд┐рддреНрд░ рдФрд░ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдПрдБ рд╕реЗрдЯ рдХрд░реЗрдВ


ES2015 рдиреЗ Map рдФрд░ Set рдбреЗрдЯрд╛ рд╕реНрдЯреНрд░рдХреНрдЪрд░реНрд╕ (рд╕рд╛рде рд╣реА рдЙрдирдХреЗ "рдХрдордЬреЛрд░" рд╕рдВрд╕реНрдХрд░рдгреЛрдВ WeakMap рдФрд░ WeakSet , рдЬрд┐рд╕рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ "рдХрдЪрд░рд╛ рдХрд▓реЗрдХреНрдЯрд░" рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рд╕реБрдзрд╛рд░ рд╣реЛрддрд╛ рд╣реИ - рдЬреЗрдПрд╕ рдЗрдВрдЬрди рдореЗрдВ рдореЗрдореЛрд░реА рдХреЗ рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рддрдВрддреНрд░)ред рдпреЗ рдмрд╣реБрдд рд▓реЛрдХрдкреНрд░рд┐рдп рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдПрдВ рд╣реИрдВ, рдЬреЛ рдХрд┐ рдЙрдирдХреЗ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рд╕реЗ рдкрд╣рд▓реЗ, рдЙрдкрд▓рдмреНрдз рднрд╛рд╖рд╛ рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирдХрд▓ рдХреА рдЬрд╛рдиреА рдереАред

рдкрд░рд┐рдгрд╛рдо


рдЖрдЬ рд╣рдордиреЗ ES2015 рдорд╛рдирдХ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХреА, рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рднрд╛рд╖рд╛ рдХреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдХреЛ рдмрд╣реБрдд рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд┐рдпрд╛ рд╣реИред рд╣рдорд╛рд░рд╛ рдЕрдЧрд▓рд╛ рд╡рд┐рд╖рдп ES2016, ES2017 рдФрд░ ES2018 рдорд╛рдирдХреЛрдВ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реЛрдВрдЧреАред

рдкреНрд░рд┐рдп рдкрд╛рдардХреЛрдВ! рдИрдПрд╕ 6 рдорд╛рдирдХ рдХреЗ рдХреМрди рд╕реЗ рдирд╡рд╛рдЪрд╛рд░ рдЖрдкрдХреЛ рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рд▓рдЧрддреЗ рд╣реИрдВ?

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


All Articles