рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рд╛рдХреНрд╖рд╛рддреНрдХрд╛рд░ рдХреЗ рд▓рд┐рдП 23 рдХрдард┐рди рдкреНрд░рд╢реНрди

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


рдЫрд╡рд┐

1. рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрдХреНрд╡рд┐рдЯреА рд╡реИрд▓рд┐рдбреЗрд╢рди рдлреАрдЪрд░реНрд╕ рдмрддрд╛рдПрдВ


рдХрдард┐рдирд╛рдИ: *


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

  • рд╕рдЦреНрдд рд╕рдорд╛рдирддрд╛ рдСрдкрд░реЗрдЯрд░ ( ===) рдкреНрд░рдХрд╛рд░ рд░реВрдкрд╛рдВрддрд░рдг рдХрд┐рдП рдмрд┐рдирд╛ рд╕рдорд╛рдирддрд╛ рдХреЗ рд▓рд┐рдП рдореВрд▓реНрдпреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИред
  • рдЧреИрд░-рд╕рдЦреНрдд рд╕рдорд╛рдирддрд╛ рдСрдкрд░реЗрдЯрд░ ( ==) рд╕рдорд╛рдирддрд╛ рдХреЗ рд▓рд┐рдП рдореВрд▓реНрдпреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИ, рдЙрдиреНрд╣реЗрдВ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдХрд╛рд░ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддрд╛ рд╣реИред

var a = "42";
var b = 42;

a == b;         // true
a === b;        // false

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

  • рдпрджрд┐ рдХрд┐рд╕реА рднреА рддреБрд▓рдирд╛рддреНрдордХ рдорд╛рди рдХрд╛ рдорд╛рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ trueрдпрд╛ false- рдСрдкрд░реЗрдЯрд░ рд╕реЗ рдмрдЪрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ ==ред рдПрдХ рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ ===ред
  • рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдкреНрд░рдпреЛрдЧ рдХрд░реЗрдВ ===рдШрдЯрдирд╛ рдореЗрдВ рд╣реИ рдХрд┐ рдЖрдк рдирд┐рдореНрди рдорд╛рди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ: 0, ┬л┬╗рдпрд╛ [](рдЦрд╛рд▓реА рд╕рд░рдгреА)ред
  • рдЕрдиреНрдп рд╕рднреА рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдЖрдк рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ==ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рди рдХреЗрд╡рд▓ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ, рдмрд▓реНрдХрд┐ рдХреЛрдб рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдФрд░ рдЗрд╕рдХреА рдкрдардиреАрдпрддрд╛ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдиреЗ рдореЗрдВ рднреА рдорджрдж рдХрд░рддрд╛ рд╣реИред

тЖТ рд╕реНрд░реЛрдд

2. рдПрдХ рддрд╛рд░реНрдХрд┐рдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рд╕реНрдЯрд┐рдВрдЧ рдХрд╛ рдЙрджрд╛рд╣рд░рдг рджреЗрдВ рдЬреЛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реИрдВ


рдХрдард┐рдирд╛рдИ: ***


рдЗрд╕ рдкреНрд░рд╢реНрди рдХрд╛ рд╕рд╛рд░ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рд╣реИ рдХрд┐ рдХреМрди рд╕реЗ рдореВрд▓реНрдп, рдЙрдиреНрд╣реЗрдВ рддрд╛рд░реНрдХрд┐рдХ рдкреНрд░рдХрд╛рд░ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЪрд╛рд▓реВ рдХрд░реЗрдВ false, рдФрд░ рдХреМрди - рд╕реЗ trueред

рдпрд╣рд╛рдВ рдЙрди рдореВрд▓реНрдпреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рджреА рдЧрдИ рд╣реИ, рдЬрд┐рдиреНрд╣реЗрдВ "рдЭреВрдард╛" рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╡реЗ, рдЬрдм рдПрдХ рддрд╛рд░реНрдХрд┐рдХ рдкреНрд░рдХрд╛рд░ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ рдПрдХ рдореВрд▓реНрдп рдореЗрдВ рдмрджрд▓ рдЬрд╛рддреЗ рд╣реИрдВ false:

  • ┬л┬╗ (рдЦрд╛рд▓реА рд▓рд╛рдЗрди)ред
  • 0, -0, NaN(рдирдВрдмрд░ рдирд╣реАрдВ рд╣реИ)ред
  • null, undefinedред

"рдЕрд╕рддреНрдп" рдПрдХ рддрд╛рд░реНрдХрд┐рдХ рдЕрд░реНрде рд╣реИ falseред

рдХреЛрдИ рднреА рдореВрд▓реНрдп рдЬреЛ рдЗрд╕ рд╕реВрдЪреА рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИ, рдЬрдм рдЗрд╕реЗ рддрд╛рд░реНрдХрд┐рдХ рдкреНрд░рдХрд╛рд░ рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ true(рдРрд╕реЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ "рд╕рддреНрдп" - рд╕рддреНрдп) рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

  • ┬лhello┬╗ред
  • 42ред
  • [ ], [ 1, ┬л2┬╗, 3 ](рд╕рд░рдгрд┐рдпрд╛рдБ)ред
  • { }, { a: 42 }(рд╡рд╕реНрддреБрдПрдБ)ред
  • function foo() { .. } (рдХрд╛рд░реНрдпреЛрдВ)ред

тАЬрд╕рдЪреНрдЪрд╛тАЭ рднреА рдПрдХ рддрд╛рд░реНрдХрд┐рдХ рдЕрд░реНрде рд╣реИ trueред

тЖТ рд╕реНрд░реЛрдд

3. IIFE рдХреНрдпрд╛ рд╣реИ?


рдХрдард┐рдирд╛рдИ: ***


IIFE (рддреБрд░рдВрдд рдЗрдирд╡реЙрдЗрд╕ рдлрдВрдХреНрд╢рди рдПрдХреНрд╕рдкреНрд░реЗрд╢рди) рдПрдХ рддреБрд░рдВрдд рд▓рд╛рдЧреВ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╣реИред рдРрд╕реА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЛ рд╕реГрдЬрди рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

(function IIFE(){
    console.log( "Hello!" );
})();
// "Hello!"

рдЗрд╕ рдкреИрдЯрд░реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдХреНрд╕рд░ рд╡реИрд╢реНрд╡рд┐рдХ рдирд╛рдо рд╕реНрдерд╛рди рдХреЗ рдкреНрд░рджреВрд╖рдг рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ IIFE рдореЗрдВ рдШреЛрд╖рд┐рдд рдЪрд░ (рдХрд┐рд╕реА рдЕрдиреНрдп рд╕рд╛рдорд╛рдиреНрдп рдХрд╛рд░реНрдп рдореЗрдВ) рдЗрд╕ рд╕рдорд╛рд░реЛрд╣ рдХреЗ рдмрд╛рд╣рд░ рдЕрджреГрд╢реНрдп рд╣реИрдВред

тЖТ рд╕реНрд░реЛрдд

4. рдореБрдЭреЗ ES6 рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рд╡рд╛рд▓реЗ рддреАрд░ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдм рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП?


рдХрдард┐рдирд╛рдИ: ***


рдИрдПрд╕ 6 рдФрд░ рдирдП рдорд╛рдирдХреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рд▓рд┐рдП рдХреЛрдб рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╕рдордп рдЙрди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд╕рд░рд▓ рдирд┐рдпрдо рдпрд╣рд╛рдВ рджрд┐рдП рдЧрдП рд╣реИрдВ:

  • functionрд╡реИрд╢реНрд╡рд┐рдХ рджрд╛рдпрд░реЗ рдореЗрдВ рдФрд░ рдЧреБрдгреЛрдВ рдХреЗ рд▓рд┐рдП рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ Object.prototypeред
  • functionрдСрдмреНрдЬреЗрдХреНрдЯ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЗ рд▓рд┐рдП рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ ред
  • рдЕрдиреНрдп рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рддреАрд░ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рддреАрд░ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд▓рдЧрднрдЧ рд╣рд░ рдЬрдЧрд╣ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреА рдЬрд╛рддреА рд╣реИред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдХреЗ рдХрдИ рдХрд╛рд░рдг рд╣реИрдВ:

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

тЖТ рд╕реНрд░реЛрдд

5. рдИрдПрд╕ 6 рд╡рд░реНрдЧреЛрдВ рдФрд░ рдлрд╝рдВрдХреНрд╢рди рдирд┐рд░реНрдорд╛рдгрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдмреАрдЪ рдХреНрдпрд╛ рдЕрдВрддрд░ рд╣реИ?


рдХрдард┐рдирд╛рдИ: ***


рдЖрдЗрдП рдкрд╣рд▓реЗ рдХреБрдЫ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВред

рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдлрд╝рдВрдХреНрд╢рди:

function Person(name) {
  this.name = name;
}

ES6 рд╡рд░реНрдЧ:

class Person {
  constructor(name) {
    this.name = name;
  }
}

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

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

рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдлрд╝рдВрдХреНрд╢рди:

function Student(name, studentId) {
  //      ,   .
  Person.call(this, name);

  //    .
  this.studentId = studentId;
}

Student.prototype = Object.create(Person.prototype);
Student.prototype.constructor = Student;

ES6 рд╡рд░реНрдЧ:

class Student extends Person {
  constructor(name, studentId) {
    super(name);
    this.studentId = studentId;
  }
}

тЖТ рд╕реНрд░реЛрдд

6. рд╣рдореЗрдВ Function.prototyp.bind () рд╡рд┐рдзрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдПрдВред


рдХрдард┐рдирд╛рдИ: ***


рдПрдордбреАрдПрди рдХреЛ рдЙрджреНрдзреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП: тАЬрд╡рд┐рдзрд┐ bind()рдПрдХ рдирдпрд╛ рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рддреА рд╣реИ, рдЬрд┐рд╕реЗ рдЬрдм рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ thisрдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рдорд╛рди рдХреЛ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдВрджрд░реНрдн рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ ред рддрд░реНрдХреЛрдВ рдХрд╛ рд╕реЗрдЯ рднреА рд╡рд┐рдзрд┐ рдХреЛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдмрд╛рдзреНрдп рдлрд╝рдВрдХреНрд╢рди рдХреЛ рджрд┐рдП рдЧрдП рддрд░реНрдХреЛрдВ рд╕реЗ рдкрд╣рд▓реЗ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬрдм рдЗрд╕реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред тАЭ

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

тЖТ рд╕реНрд░реЛрдд 

7. рдЖрдорддреМрд░ рдкрд░ рдХрд┐рди рдЕрдирд╛рдо рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ?


рдХрдард┐рдирд╛рдИ: ***


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

(function() {
  // - .
})();

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

setTimeout(function() {
  console.log('Hello world!');
}, 1000);

рдмреЗрдирд╛рдореА рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд╢реИрд▓реА рдХреА рдирд┐рд░реНрдорд╛рдг рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдореЗрдВ рдЖрд╕рд╛рдиреА рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╛ рдЬрдм рд▓реЙрдбрд╢ рдЬреИрд╕реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ (рдпрд╣ рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓рд╛ рдХреЙрд▓рдмреИрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдирдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд╕рдорд╛рди рд╣реИ)ред

const arr = [1, 2, 3];
const double = arr.map(function(el) {
  return el * 2;
});
console.log(double); // [2, 4, 6]

тЖТ рд╕реНрд░реЛрдд

8. рдСрдмреНрдЬреЗрдХреНрдЯ.рдлреНрд░реАрдЬ () рд╡рд┐рдзрд┐ рдФрд░ рдХреЙрдиреНрд╕реНрдЯреЗрдмрд▓ рдХреАрд╡рд░реНрдб рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдХреНрдпрд╛ рд╣реИ?


рдХрдард┐рдирд╛рдИ: ***


рдХреАрд╡рд░реНрдб constрдФрд░ рд╡рд┐рдзрд┐ Object.freeze()рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рдЪреАрдЬреЗрдВ рд╣реИрдВред

рдХреАрд╡рд░реНрдб constрдмрд╛рдЗрдВрдбрд┐рдВрдЧ ("рдЪрд░") рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИред рдпрд╣ рдПрдХ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдмрдВрдзрди рдмрдирд╛рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд, рдХрд┐рд╕реА рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдШреЛрд╖рд┐рдд рдХрд┐рдП рдЧрдП рдПрдХ рдЪрд░ (рдирд┐рд░рдВрддрд░) рдХреЗ рд▓рд┐рдП constрдХреБрдЫ рдирдпрд╛ рдмрд╛рдВрдзрдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИред рдПрдХ рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЛ рдПрдХ рдирдпрд╛ рдорд╛рди рдирд╣реАрдВ рд╕реМрдВрдкрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

const person = {
    name: "Leonardo"
};
let animal = {
    species: "snake"
};
person = animal; // Uncaught TypeError: Assignment to constant variable.

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

let person = {
    name: "Leonardo"
};
Object.freeze(person);
person.name = "Lima"; // Uncaught TypeError: Cannot assign to read only property 'name' of object
console.log(person);

рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рд╕рдЦреНрдд рдореЛрдб рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рдореЛрдб рдореЗрдВ, "рдЬрдореЗ рд╣реБрдП" рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдмрджрд▓рдиреЗ рдХрд╛ рдСрдкрд░реЗрд╢рди рдмрд╕ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

тЖТ рд╕реНрд░реЛрдд

9. "рдЬреЗрдирд░реЗрдЯрд░" рдХреНрдпрд╛ рд╣реИ?


рдХрдард┐рдирд╛рдИ: ***


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

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

function* makeRangeIterator(start = 0, end = Infinity, step = 1) {
    let iterationCount = 0;
    for (let i = start; i < end; i += step) {
        iterationCount++;
        yield i;
    }
    return iterationCount;
}

тЖТ рд╕реНрд░реЛрдд

10. рдЬрдирд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдм рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП?


рдХрдард┐рдирд╛рдИ: ***


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

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

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

тЖТ рд╕реНрд░реЛрдд

11. тАЬрдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓ рдЪрд░тАЭ рдХреНрдпрд╛ рд╣реИ?


рдХрдард┐рдирд╛рдИ: ****


"рд╡реИрд░рд┐рдПрдмрд▓ рдмрдврд╝рд╛рдиреЗ" рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдХрд╛ рд╕рд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рд╡рд┐рдЬреНрдЮрд╛рдкрди рдореМрдЬреВрджрд╛ рджрд╛рдпрд░реЗ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ "рд╡реГрджреНрдзрд┐" рдХрд░рддреЗ рд╣реИрдВред рдирддреАрдЬрддрди, рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрд╕рдХреА рдШреЛрд╖рдгрд╛ рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдХреЗрд╡рд▓ рдЪрд░ рдШреЛрд╖рдгрд╛рдПрдВ рд╣реА рдЙрдард╛рдИ рдЬрд╛рддреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрдирдХрд╛ рдЖрд░рдВрднрд┐рдХ рдХреЛрдб рдирд╣реАрдВред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдХреАрд╡рд░реНрдб varрдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдШреЛрд╖рд┐рдд рдХрд┐рдП рдЧрдП рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдФрд░ рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рд╕реЗ рдЕрд▓рдЧ рд╣реИ letрдФрд░ constред

тЖТ рд╕реНрд░реЛрдд

12. рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдЖрдЙрдЯрдкреБрдЯ рдХреНрдпрд╛ рд╣реЛрдЧрд╛?


рдХрдард┐рдирд╛рдИ: ****


var output = (function(x) {
  delete x;
  return x;
})(0);

console.log(output);

рдпрд╣ рдХреЛрдб рдЖрдЙрдЯрдкреБрдЯ рджреЗрдЧрд╛ 0ред рдСрдкрд░реЗрдЯрд░ рдХрд╛ deleteрдЙрдкрдпреЛрдЧ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдЧреБрдгреЛрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдФрд░ x- рдпрд╣ рдПрдХ рд╡рд╕реНрддреБ рд╕рдВрдкрддреНрддрд┐ рдирд╣реАрдВ рд╣реИ - рдпрд╣ рдПрдХ рд╕реНрдерд╛рдиреАрдп рдЪрд░ рд╣реИред рдСрдкрд░реЗрдЯрд░ deleteрд╕реНрдерд╛рдиреАрдп рдЪрд░ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

тЖТ рд╕реНрд░реЛрдд

13. рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдЖрдЙрдЯрдкреБрдЯ рдХреНрдпрд╛ рд╣реЛрдЧрд╛?


рдХрдард┐рдирд╛рдИ: ****


var Employee = {
  company: 'xyz'
}
var emp1 = Object.create(Employee);
delete emp1.company
console.log(emp1.company);

рдпрд╣ рдХреЛрдб рдЖрдЙрдЯрдкреБрдЯ рджреЗрдЧрд╛ xyzред рдПрдХ рд╕рдВрдкрддреНрддрд┐ companyрдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреА рд╕рдВрдкрддреНрддрд┐ рдирд╣реАрдВ рд╣реИ emp1, рдмрд▓реНрдХрд┐ рдЙрд╕рдХреЗ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреА рд╕рдВрдкрддреНрддрд┐ рд╣реИред рдСрдкрд░реЗрдЯрд░ deleteрдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдЧреБрдгреЛрдВ рдХреЛ рдирд╣реАрдВ рд╣рдЯрд╛рддрд╛ рд╣реИред рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреА emp1рдЕрдкрдиреА рд╕рдВрдкрддреНрддрд┐ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ companyред рдЖрдк рдЗрд╕реЗ рдЗрд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

console.log(emp1.hasOwnProperty('company')); // false

рдЕрдЧрд░ рд╣рдореЗрдВ рдЕрднреА рднреА рдЗрд╕ рд╕рдВрдкрддреНрддрд┐ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдк рдЗрд╕реЗ рд╕реАрдзреЗ рдСрдмреНрдЬреЗрдХреНрдЯ Employee( delete Employee.company) рд╕реЗ рд╕рдВрдкрд░реНрдХ рдХрд░рдХреЗ рдпрд╛ emp1рдЕрдкрдиреА рд╕рдВрдкрддреНрддрд┐ __proto__( delete emp1.__proto__.company) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╕реЗ рд╕рдВрдкрд░реНрдХ рдХрд░рдХреЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ред

тЖТ рд╕реНрд░реЛрдд

14. рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдбрд┐рдЬрд╛рдЗрди рдкреИрдЯрд░реНрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдПрдВред


рдХрдард┐рдирд╛рдИ: ****


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

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

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

тЖТ рд╕реНрд░реЛрдд

15. ES6 рдореЗрдВ "рдЕрд╕реНрдерд╛рдпреА рдбреЗрдб рдЬреЛрди" рдХреНрдпрд╛ рд╣реИ?


рдХрдард┐рдирд╛рдИ: ****


ES6 рдиреЗ рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдШреЛрд╖рд┐рдд рдЪрд░ рдФрд░ рд╕реНрдерд┐рд░рд╛рдВрдХ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд┐рдпрд╛ letрдФрд░ const(рдпрд╣ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдШреЛрд╖рд┐рдд рдЗрдХрд╛рдИ рдХрд╛ рдЙрджрдп var, classрдФрд░ function)ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдХреЛрдб рдореЗрдВ рдПрдХ рдЬрд╝реЛрди рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдХрд┐рд╕реА рд╡реИрд░рд┐рдПрдмрд▓ рдпрд╛ рдХрдВрдЯреАрдиреНрдпреВ рдХреЛ рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рджрд╛рдпрд░реЗ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рдиреЗ рд╕реЗ рдлреИрд▓рддрд╛ рд╣реИред рдЗрд╕ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдПрдХ рдЪрд░ рдпрд╛ рдЕрдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдПрдХ рддреНрд░реБрдЯрд┐ рдЙрддреНрдкрдиреНрди рд╣реЛрдЧреАред рдпрд╣ "рдЯреЗрдореНрдкреЛрд░рд▓ рдбреЗрдб рдЬреЛрди" (TDZ) рд╣реИред

//console.log(aLet)  //  ReferenceError

let aLet;
console.log(aLet); // undefined
aLet = 10;
console.log(aLet); // 10

рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, TDZ рдШреЛрд╖рдгрд╛ рдХреЗ рдмрд╛рдж рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ aLet, рд▓реЗрдХрд┐рди aLetрдорд╛рди рдЕрд╕рд╛рдЗрди рдХрд┐рдП рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж рдирд╣реАрдВ ред

тЖТ рд╕реНрд░реЛрдд

16. рдХреНрдпрд╛ рдЖрдк рдлрд╝реЛрд░рдЪ () рдФрд░ рдорд╛рдирдЪрд┐рддреНрд░ () рд╕рд░рдгреА рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдмреАрдЪ рдореБрдЦреНрдп рдЕрдВрддрд░ рдХрд╛ рд╡рд░реНрдгрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдХрд┐рди рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдЖрдк рдЗрдирдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рд╡рд┐рдзрд┐ рдХреЛ рджреВрд╕рд░реЗ рдХреЗ рд▓рд┐рдП рдкрд╕рдВрдж рдХрд░реЗрдВрдЧреЗ?


рдХрдард┐рдирд╛рдИ: ****


рдЗрди рддрд░реАрдХреЛрдВ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВред

рдпрд╣рд╛рдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ .forEach():

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

const a = [1, 2, 3];
const doubled = a.forEach((num, index) => {
  //  -  num /  index.
});

// doubled = undefined

рдпрд╣рд╛рдБ рд╡рд┐рдзрд┐ рдХрд╛ рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╡рд┐рд╡рд░рдг рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ .map():

  • рдпрд╣ рдРрд░реЗ рдХреЗ рддрддреНрд╡реЛрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред
  • рдпрд╣ рдореВрд▓ рд╕рд░рдгреА рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдХреЛ рдирдП рд╕рд░рдгреА рдХреЗ рдПрдХ рддрддреНрд╡ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдореВрд▓ рд╕рд░рдгреА рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдкрд╛рд░рд┐рдд рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдмреБрд▓рд╛рддрд╛ рд╣реИред

const a = [1, 2, 3];
const doubled = a.map(num => {
  return num * 2;
});

// doubled = [2, 4, 6]

рдирддреАрдЬрддрди, рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдХреЗ рдмреАрдЪ рдореБрдЦреНрдп рдЕрдВрддрд░ .forEach()рдФрд░ .map()рд╣реИ рдХрд┐ рдпрд╣ рд╣реИ .map()рдПрдХ рдирдИ рд╕рд░рдгреА рджреЗрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЛ рдЗрд╕ рд╕рд░рдгреА рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рдмрд┐рдирд╛ рдореВрд▓ рд╕рд░рдгреА рдХреЗ рддрддреНрд╡реЛрдВ рдХреЛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдЪреБрдирдирд╛ рдЪрд╛рд╣рд┐рдП .map()ред рдпрджрд┐ рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рд╕рд░рдгреА рдХреЗ рддрддреНрд╡реЛрдВ рдкрд░ рдкреБрдирд░рд╛рд╡реГрддрд┐ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рддреЛ рдЖрдк рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ .forEach()ред

тЖТ рд╕реНрд░реЛрдд

17. рдЕрдШреЛрд╖рд┐рдд рдЪрд░, рдЕрд╢рдХреНрдд рдорд╛рди рд╡рд╛рд▓реЗ рдЪрд░ рдФрд░ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдЪрд░ рдореЗрдВ рдХреНрдпрд╛ рдЕрдВрддрд░ рд╣реИ? рдЗрд╕ рддрдереНрдп рдХреЗ рд▓рд┐рдП рдПрдХ рдЪрд░ рдХреА рдЬрд╛рдВрдЪ рдХреИрд╕реЗ рдХрд░реЗрдВ рдХрд┐ рдпрд╣ рдЕрдШреЛрд╖рд┐рдд рд╣реИ, рд╕рд╛рде рд╣реА рд╕рд╛рде рдЕрд╢рдХреНрдд рдФрд░ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реИ?


рдХрдард┐рдирд╛рдИ: ****


рдПрдХ рдЕрдШреЛрд╖рд┐рдд рдЪрд░ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рдПрдХ рдорд╛рди рдПрдХ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЛ рд╕реМрдВрдкрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдкрд╣рд▓реЗ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдШреЛрд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ var, letрдпрд╛ constред рд╡реИрд╢реНрд╡рд┐рдХ рджрд╛рдпрд░реЗ рдореЗрдВ рдЕрдШреЛрд╖рд┐рдд рдЪрд░ рдХреЛ рдореМрдЬреВрджрд╛ рджрд╛рдпрд░реЗ рд╕реЗ рдмрд╛рд╣рд░ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рдЦреНрдд рдореЛрдб рдореЗрдВ, рдПрдХ рдЕрдШреЛрд╖рд┐рдд рдЪрд░ рдХрд╛ рдорд╛рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╕рдордп рдПрдХ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ReferenceErrorред рдЕрдШреЛрд╖рд┐рдд рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрд╢рдВрд╕рд╛ рдирд╣реАрдВ рдХреА рдЬрд╛рддреА рд╣реИ - рдЬреИрд╕реЗ рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрд╢рдВрд╕рд╛ рдирд╣реАрдВ рдХреА рдЬрд╛рддреА рд╣реИред рдЙрдиреНрд╣реЗрдВ рд╣рд░ рддрд░рд╣ рд╕реЗ рдЯрд╛рд▓рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЕрдШреЛрд╖рд┐рдд рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рд╕реЗ рдЦреБрдж рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдмреНрд▓реЙрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ try/catchред

function foo() {
  x = 1; //     ReferenceError
}

foo();
console.log(x); // 1

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

var foo;
console.log(foo); // undefined
console.log(foo === undefined); // true
console.log(typeof foo === 'undefined'); // true

console.log(foo == null); // true.        undefined!

function bar() {}
var baz = bar();
console.log(baz); // undefined

рдПрдХ рдорд╛рди рд╡рд╛рд▓реЗ рдЪрд░ nullрдХреЛ рдЗрд╕ рдорд╛рди рдХреЗ рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдЕрд░реНрде рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рдХрд╛ рдкреНрд░рддреАрдХ рд╣реИ рдФрд░- undefinedрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╕реЗ рднрд┐рдиреНрди рд╣реИ рдХрд┐ рдЗрд╕рдореЗрдВ рдореВрд▓реНрдп рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕реМрдВрдкрд╛ рдЧрдпрд╛ рдерд╛ред рдореВрд▓реНрдп рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП null, рдпрд╣ рд╕рдЦреНрдд рд╕рдорд╛рдирддрд╛ рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП null, рдХреЗ рд░реВрдк рдореЗрдВ рдХреА рдЬрд╛рдБрдЪ рдХрд░рдиреЗ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ undefined, рдПрдХ рдХреЛ рдЧреИрд░-рд╕рдЦреНрдд рд╕рдорд╛рдирддрд╛ рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреЛ рдорд╛рдиреЛрдВ nullрдФрд░ рд╕рдорд╛рди рдХреЛ рдорд╛рдирддрд╛ рд╣реИ undefinedред

var foo = null;
console.log(foo === null); // true
console.log(typeof foo === 'object'); // true

console.log(foo == undefined); // true        null!

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

тЖТ рд╕реНрд░реЛрдд

18. рдбрд┐рдЬрд╛рдЗрди рдореЙрдбреНрдпреВрд▓ "рдУрдкрди рдореЙрдбреНрдпреВрд▓" рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдПрдВ


рдХрдард┐рдирд╛рдИ: *****


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

var Exposer = (function() {
  var privateVariable = 10;

  var privateMethod = function() {
    console.log('Inside a private method!');
    privateVariable++;
  }

  var methodToExpose = function() {
    console.log('This is a method I want to expose!');
  }

  var otherMethodIWantToExpose = function() {
    privateMethod();
  }

  return {
      first: methodToExpose,
      second: otherMethodIWantToExpose
  };
})();

Exposer.first();        // : This is a method I want to expose!
Exposer.second();       // : Inside a private method!
Exposer.methodToExpose; // undefined

рдЗрд╕ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рд╕реНрдкрд╖реНрдЯ рджреЛрд╖ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдирд┐рдЬреА рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

тЖТ рд╕реНрд░реЛрдд

19. рдореИрдк рдФрд░ рд╡реАрдХрдПрдк рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдореЗрдВ рдХреНрдпрд╛ рдЕрдВрддрд░ рд╣реИ?


рдХрдард┐рдирд╛рдИ: *****


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

var map = new Map();
var weakmap = new WeakMap();

(function() {
    var a = {
        x: 12
    };
    var b = {
        y: 12
    };

    map.set(a, 1);
    weakmap.set(b, 2);
})()

Iife рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдЕрдм рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рд╣реЛрдЧрд╛ aрдФрд░ bред рдЗрд╕рд▓рд┐рдП, рдХрдЪрд░рд╛ рдХрд▓реЗрдХреНрдЯрд░ рдХреБрдВрдЬреА рдХреЛ рд╣рдЯрд╛ рджреЗрддрд╛ bрд╣реИ weakmapрдФрд░ рдореЗрдореЛрд░реА рдХреЛ рд╕рд╛рдл рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдХрдВрдЯреЗрдВрдЯ mapрд╡рд╣реА рд░рд╣рддрд╛ рд╣реИред

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

тЖТ рд╕реНрд░реЛрдд

20. рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдкреИрд░рд╛рдореАрдЯрд░ рдХреИрд╕реЗ рдкрд╛рд░рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ: рд╕рдВрджрд░реНрдн рдпрд╛ рдореВрд▓реНрдп рд╕реЗ?


рдХрдард┐рдирд╛рдИ: *****


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

рдпрд╣рд╛рдБ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ:

function changeStuff(a, b, c)
{
  a = a * 10;
  b.item = "changed";
  c = {item: "changed"};
}

var num = 10;
var obj1 = {item: "unchanged"};
var obj2 = {item: "unchanged"};

changeStuff(num, obj1, obj2);

console.log(num);
console.log(obj1.item);
console.log(obj2.item);

рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдХреЛрдб рдХреНрдпрд╛ рдЖрдЙрдЯрдкреБрдЯ рджреЗрдЧрд╛:

10
changed
unchanged

тЖТ рд╕реНрд░реЛрдд

21. рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХрд╛ "рдбреАрдк рдлреНрд░реАрдЬ" рдХреИрд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░реЗрдВ?


рдХрдард┐рдирд╛рдИ: *****


рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ "рдбреАрдк рдлреНрд░реАрдЬрд┐рдВрдЧ" рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Object.freeze(), рдЖрдкрдХреЛ рдПрдХ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдЧреБрдгреЛрдВ рдХреЛ "рдлреНрд░реАрдЬ" рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рднреА рд╣реИрдВред

рдпрд╣рд╛рдБ рдПрдХ рд╡рд╕реНрддреБ рдХреЗ рд╕рд╛рдзрд╛рд░рдг "рдардВрдб" рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

let person = {
    name: "Leonardo",
    profession: {
        name: "developer"
    }
};
Object.freeze(person); //   
person.profession.name = "doctor";
console.log(person); // { name: 'Leonardo', profession: { name: 'doctor' } }

рдпрд╣рд╛рдБ "рдЧрд╣рд░реА рдлреНрд░реАрдЬ" рд╣реИ:

function deepFreeze(object) {
    let propNames = Object.getOwnPropertyNames(object);
    for (let name of propNames) {
        let value = object[name];
        object[name] = value && typeof value === "object" ?
            deepFreeze(value) : value;
    }
    return Object.freeze(object);
}
let person = {
    name: "Leonardo",
    profession: {
        name: "developer"
    }
};
deepFreeze(person);
person.profession.name = "doctor"; // TypeError: Cannot assign to read only property 'name' of object

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

тЖТ рд╕реНрд░реЛрдд

22. рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рдЗрд╕ рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рдкрд░реЗрд╢рд╛рдиреА рдХреНрдпреЛрдВ рд╣реЛ рд░рд╣реА рд╣реИ?


рдХрдард┐рдирд╛рдИ: *****


рдЗрд╕рдХреЗ рдмрд╛рд░реЗ thisрдореЗрдВ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдореВрд▓реНрдп рдирд╣реАрдВ рд╣реИ thisред рдпрд╣ рдорд╛рди рдЗрд╕ рдмрд╛рдд рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдлрд╝рдВрдХреНрд╢рди рдХреИрд╕реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рд╣рдо рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреБрдЫ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдорд╛рди рдХреЗ рд╕рд╛рде рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ this, рддреЛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдпрд╣ рдорд╛рди рдлрд╝рдВрдХреНрд╢рди рдХреА рдШреЛрд╖рдгрд╛ рдХреЗ рджреМрд░рд╛рди рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдЖрдкрдХреЗ рдХреЙрд▓ рдХреЗ рджреМрд░рд╛рди рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣рд╛рдБ рдХреБрдЫ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реИрдВ this:

  • рдпрджрд┐ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рдореЗрдВ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЬреЛ рдХрд┐ рд╡реНрдпреВ рдХрдВрд╕реНрдЯреНрд░рдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ someFunc()), рддреЛ рдпрд╣ thisрд╡реИрд╢реНрд╡рд┐рдХ рдСрдмреНрдЬреЗрдХреНрдЯ (рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдпрд╣ window) рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░реЗрдЧрд╛ ред рдпрджрд┐ рдХреЛрдб рдХреЛ рд╕рдЦреНрдд рдореЛрдб рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдПрдХ thisрдорд╛рди рд▓рд┐рдЦрд╛ рдЬрд╛рдПрдЧрд╛ undefinedред
  • рдпрджрд┐ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рдПрдХ рд╡рд┐рдзрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдХреАрд╡рд░реНрдб thisрдЙрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬреЛ рд╡рд┐рдзрд┐ рдХрд╛ рд╣реИред
  • call apply, this , call apply.
  • , this .
  • , new, this , prototype -.
  • рдпрджрд┐ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдмрд╛рдЗрдВрдб рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ , рддреЛ thisрдлрд╝рдВрдХреНрд╢рди рдХреАрд╡рд░реНрдб bindрдкрд╣рд▓реЗ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рдореВрд▓реНрдп рдХреЗ рд▓рд┐рдП рд╕рдЦреНрддреА рд╕реЗ рдмрд╛рдзреНрдп рд╣реЛрдЧрд╛ ред рдпрд╣ рдирд┐рдпрдо рдХрд╛ рдПрдХрдорд╛рддреНрд░ рдЕрдкрд╡рд╛рдж рд╣реИ рдХрд┐ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рд╣рд╛рд░реНрдб-рдХреЛрдбрд┐рдд рдорд╛рди рдирд╣реАрдВ рд╣реИ thisред рдЙрдкрдпреЛрдЧ bindрдХрд┐рдП рдЧрдП рдХрд╛рд░реНрдп рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╣реИрдВ thisред

тЖТ рд╕реНрд░реЛрдд

23. рд╕рдорд╛рди рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрд╕рд┐рдВрдХреНрд╕ / рд╡реЗрдЯ рдирд┐рд░реНрдорд╛рдг рдФрд░ рдЬрдирд░реЗрдЯрд░ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреА рддреБрд▓рдирд╛ рдХрд░реЗрдВ


рдХрдард┐рдирд╛рдИ: *****


  • рдЬрдм рдПрдХ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЬрдирд░реЗрдЯрд░ рдХреЛ рдкреБрдирд░рд╛рд╡реГрддреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ .next()рдЗрд╕ рдкрджреНрдзрддрд┐ рдХрд╛ рдкреНрд░рддреНрдпреЗрдХ рдХреЙрд▓ рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдПрдХрд▓ рдорд╛рди рд▓реМрдЯрд╛рддрд╛ рд╣реИ yieldред Async / рдкреНрд░рддреАрдХреНрд╖рд╛ рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдкреНрд░рддреАрдХреНрд╖рд╛ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
  • Async / рдкреНрд░рддреАрдХреНрд╖рд┐рдд рдбрд┐рдЬрд╝рд╛рдЗрди рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЬрдирд░реЗрдЯрд░ рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓реЗ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рд╕рд░рд▓ рдХрд░рддрд╛ рд╣реИред
  • рдЬрдирд░реЗрдЯрд░ рджреНрд╡рд╛рд░рд╛ рд▓реМрдЯрд╛рдП рдЧрдП рдореВрд▓реНрдпреЛрдВ рдореЗрдВ рд╣рдореЗрд╢рд╛ рдлреЙрд░реНрдо рд╣реЛрддрд╛ рд╣реИ {value: X, done: Boolean}, рдФрд░ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдлрд╝рдВрдХреНрд╢рди рдорд╛рди рдХреЗ рд╕рд╛рде рд╣рд▓ рдХрд┐рдП рдЧрдП рд╡рд╛рджреЛрдВ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рддреЗ рд╣реИрдВ X, рдпрд╛ рд╡рд┐рдлрд▓ рд╣реЛрддреЗ рд╣реИрдВред
  • рдПрдХ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╡рд╛рджреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЬрдирд░реЗрдЯрд░ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЗрд╕ рддрд░рд╣ рдХреЗ рд░реВрдкрд╛рдВрддрд░рдг рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИред

рдпрд╣рд╛рдБ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХрд╛рд░реНрдп рд╣реИ:

//  
async function init() {
    const res1 = await doTask1();
    console.log(res1);

    const res2 = await doTask2(res1);
    console.log(res2);

    const res3 = await doTask3(res2);
    console.log(res3);

    return res3;
}

init();

рдпрд╣рд╛рдБ рдПрдХ рд╕рдорд╛рди рдЬрдирд░реЗрдЯрд░ рд╣реИред

//    
function runner(genFn) {
    const itr = genFn();

    function run(arg) {
        let result = itr.next(arg);

        if (result.done) {
            return result.value;
        } else {
            return Promise.resolve(result.value).then(run);
        }
    }

    return run;
}

//   runner    
runner(function* () {
    const res1 = await doTask1();
    console.log(res1);

    const res2 = await doTask2(res1);
    console.log(res2);

    const res3 = await doTask3(res2);
    console.log(res3);

    return res3;
});

тЖТ рд╕реНрд░реЛрдд

рдкреНрд░рд┐рдп рдкрд╛рдардХреЛрдВ! рдЖрдкрдХреЗ рдЗрдВрдЯрд░рд╡реНрдпреВ рдХреЗ рджреМрд░рд╛рди рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреМрди рд╕реЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рд╡рд╛рд▓ рдЖрдП?


All Articles