рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд╕рдЦреНрдд рдореЛрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ?

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

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



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

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

рд╕рдЦреНрдд рдореЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ


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

рдпрджрд┐ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдХреБрдЫ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИрдВ рдЬреЛ рд╕рдЦреНрдд рдореЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЕрдиреНрдп рдЬреЛ рдЗрд╕ рдореЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдРрд╕рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдпреЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╡рд┐рд▓рдп рд╣реЛред

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

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

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

 const strictFunction = ()=>{  'use strict';  const nestedFunction = ()=>{    //        } } 

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

рд╕рдЦреНрдд рдореЛрдб рджреНрд╡рд╛рд░рд╛ рдЬреЗрдПрд╕ рдХреЛрдб рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рд▓рд╛рдпрд╛ рдЧрдпрд╛


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

Silent рдореМрди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдЕрдкрд╡рд╛рдж рдореЗрдВ рдмрджрд▓реЗрдВ


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

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

 'use strict'; badVariable = 1; 

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

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

рдЗрд╕рд▓рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рдЦреНрдд рдореЛрдб рдореЗрдВ, рдЖрдк рдХреЗрд╡рд▓-рдкрдврд╝рдиреЗ рд╡рд╛рд▓реА рд╕рдВрд╕реНрдерд╛рдУрдВ рдЬреИрд╕реЗ рдХрд┐ arguments , NaN рдпрд╛ eval рдкрд░ рдорд╛рди рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдСрдкрд░реЗрд╢рди рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред

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

  • рдореВрд▓реНрдп рдХреЛ рдХреЗрд╡рд▓-рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдкрддреНрддрд┐ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕, рдЬреИрд╕реЗ рдХрд┐ рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреА рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдпреЛрдЧреНрдп рд╡реИрд╢реНрд╡рд┐рдХ рд╕рдВрдкрддреНрддрд┐;
  • рдПрдХ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рд▓рд┐рдП рдПрдХ рдореВрд▓реНрдп рд▓рд┐рдЦрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдЬрд┐рд╕рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдЧрдЯрд░ рд╣реЛрддрд╛ рд╣реИ;
  • рдПрдХ рдЧреИрд░-рдПрдХреНрд╕реНрдЯреЗрдВрд╕рд┐рдмрд▓ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рд╕рдВрдкрддреНрддрд┐ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ред

рдпрд╣рд╛рдБ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдирд┐рд░реНрдорд╛рдг рдХреЗ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВ рдЬреЛ рд╕рдЦреНрдд рдореЛрдб рдЕрдкрд╡рд╛рджреЛрдВ рдХрд╛ рдиреЗрддреГрддреНрд╡ рдХрд░рддреЗ рд╣реИрдВ:

 'use strict'; let undefined = 5; let Infinity = 5; let obj = {}; Object.defineProperty(obj, 'foo', { value: 1, writable: false }); obj.foo = 1 let obj2 = { get foo() { return 17; } }; obj2.foo = 2 let fixedObj = {}; Object.preventExtensions(fixedObj); fixed.bar= 1; 

рдЗрд╕ рддрд░рд╣ рдХреЗ рдХреЛрдб рдЕрдВрд╢реЛрдВ рдХреЛ рд╕рдЦреНрдд рдореЛрдб рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдПрдХ TypeError рдЕрдкрд╡рд╛рдж рдХреЛ рдлреЗрдВрдХ рджреЗрдЧрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, undefined рдФрд░ Infinity рд╡реИрд╢реНрд╡рд┐рдХ рд╕рдВрд╕реНрдерд╛рдПрдВ рд╣реИрдВ рдЬрд┐рдирдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдЕрдзрд┐рд▓реЗрдЦрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдУрдмреНрдЬреЗрдХреНрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА foo рд╕рдВрдкрддреНрддрд┐ рдкреБрдирд░реНрд▓реЗрдЦрди рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреА рд╣реИред obj2 рдХреА foo рдкреНрд░реЙрдкрд░реНрдЯреА рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдЧреЗрдЯрд░ рд╣реИред fixedObj рдСрдмреНрдЬреЗрдХреНрдЯ fixedObj Object.preventExtensions рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЧреИрд░-рдПрдХреНрд╕реНрдЯреЗрдВрд╕рд┐рдмрд▓ рдмрдирд╛рдпрд╛ fixedObj рд╣реИред

рдПрдХ TypeError рдХреЛ рд╣рдЯрд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рднреА TypeError рдореЗрдВ рдкрд░рд┐рдгрд╛рдо рджреЗрдЧрд╛:

 'use strict'; delete Array.prototype 

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

 'use strict'; let o = { a: 1, a: 2 }; 

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

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

 'use strict'; const multiply = (x, x, y) => x*x*y; 

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

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

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

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

рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЗрд╕ рддрд░рд╣ рдПрдХ рдХреЛрдб рд╣реИ:

 let x = 1; with (obj) {  x; } 

рджреБрднрд╛рд╖рд┐рдпрд╛ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдХрд┐ рдмреНрд▓реЙрдХ рдХреЗ with рд╕реНрдерд┐рдд рдЪрд░ x рдмрд╛рд╣рд░реА рдЪрд░ x рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдпрд╛ obj.x рдЧреБрдг obj рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛред

рдирддреАрдЬрддрди, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╕реНрдореГрддрд┐ рдореЗрдВ x рдореВрд▓реНрдп рдХрд╣рд╛рдВ рд╕реНрдерд┐рдд рд╣реЛрдЧрд╛ред рдРрд╕реА рдЕрд╕реНрдкрд╖реНрдЯрддрд╛рдУрдВ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рдЦреНрдд рдореЛрдб рдореЗрдВ рдХрдерди рдХреЗ with рдЙрдкрдпреЛрдЧ рдирд┐рд╖рд┐рджреНрдз рд╣реИред рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдпрджрд┐ рдЖрдк рдирд┐рдореНрди рдХреЛрдб рдХреЛ рд╕рдЦреНрдд рдореЛрдб рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ:

 'use strict'; let x = 1; with (obj) {  x; } 

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

рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╕рдЦреНрдд рдореЛрдб рдореЗрдВ, eval рд╡рд┐рдзрд┐ рдореЗрдВ рдкрд╛рд░рд┐рдд рдХреЛрдб рдореЗрдВ рдЪрд░ рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордирд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рд╛рдорд╛рдиреНрдп рдореЛрдб рдореЗрдВ, рдкреНрд░рдкрддреНрд░ eval('let x') рдХреА рдПрдХ рдХрдорд╛рдВрдб рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдЪрд░ x рдХреА рдШреЛрд╖рдгрд╛ рд╣реЛрдЧреАред рдпрд╣ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░реНрд╕ рдХреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдореЗрдВ рд╡реИрд░рд┐рдПрдмрд▓ рдШреЛрд╖рдгрд╛рдУрдВ рдХреЛ рдЫрд┐рдкрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ eval рдмрд╛рд╣рд░ рд╕рдорд╛рди рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЗрд╕реЗ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рдЦреНрдд рдореЛрдб рдореЗрдВ рдЗрд╕реЗ рдХреЛрдб рдореЗрдВ рд╡реИрд░рд┐рдПрдмрд▓ рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рд╕реЗ рдордирд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╡рд┐рдзрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрддреНрддреАрд░реНрдг рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

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

 'use strict'; let x; delete x; 

рдЧрд▓рдд рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдирд┐рд░реНрдорд╛рдг synt


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

рдпрд╣рд╛рдВ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдФрд░ arguments рдХреЗ рджреБрд░реБрдкрдпреЛрдЧ рдХреЗ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВ:

 'use strict'; eval = 1; arguments++; arguments--; ++eval; eval--; let obj = { set p(arguments) { } }; let eval; try { } catch (arguments) { } try { } catch (eval) { } function x(eval) { } function arguments() { } let y = function eval() { }; let eval = ()=>{ }; let f = new Function('arguments', "'use strict'; return 1;"); 

рд╕рдЦреНрдд рдореЛрдб рдореЗрдВ, рдЖрдк arguments рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдЙрдкрдирд╛рдо рдирд╣реАрдВ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрди рдЙрдкрдирд╛рдореЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирдП arguments рдорд╛рди рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд╕рд╛рдорд╛рдиреНрдп рдореЛрдб рдореЗрдВ, рдпрджрд┐ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдкрд╣рд▓рд╛ рдкреИрд░рд╛рдореАрдЯрд░ a , рддреЛ рдлрд╝рдВрдХреНрд╢рди рдХреЛрдб рдореЗрдВ рдорд╛рди рд╕реЗрдЯ рдХрд░рдиреЗ рд╕реЗ рднреА arguments[0] рдореЗрдВ рдорд╛рди рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрддрд╛ рд╣реИ arguments[0] ред рд╕рдЦреНрдд рдореЛрдб рдореЗрдВ, arguments рдореЗрдВ рд╣рдореЗрд╢рд╛ рдЙрди arguments рдХреА рд╕реВрдЪреА рд╣реЛрдЧреА, рдЬрд┐рдирдХреЗ рд╕рд╛рде рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдмреБрд▓рд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдорд╛рди рд▓реЗрдВ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рд╣реИрдВ:

 const fn = function(a) {  'use strict';  a = 2;  return [a, arguments[0]]; } console.log(fn(1)) 

рдХрдВрд╕реЛрд▓ рдХреЛ [2,1] рдорд┐рд▓реЗрдЧрд╛ред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ 2 рдХреЗ рдорд╛рди рдХреЛ рд▓рд┐рдЦрддреЗ рдирд╣реАрдВ рд╣реИ 2 рдХреЗ рдорд╛рди рдХреЛ arguments[0] рд╕реЗ рдирд╣реАрдВ рд▓рд┐рдЦрддреЗ рд╣реИрдВ arguments[0] ред

PtOptimize рдкреНрд░рджрд░реНрд╢рди


рд╕рдЦреНрдд рдореЛрдб рдореЗрдВ, arguments.callee рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рдореЛрдб рдореЗрдВ, рдпрд╣ рдЙрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдореВрд▓ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдирд╛рдо рджреЗрддрд╛ рд╣реИ рдЬрд┐рд╕рдХреА arguments рдХреА callee рд╕рдВрдкрддреНрддрд┐ рдЬрд┐рд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рд╣рдо рдЬрд╛рдВрдЪ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

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

рд╕рдЦреНрдд рдореЛрдб рдореЗрдВ, this рдХреЛ рд╣рдореЗрд╢рд╛ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рд╕рд╛рдорд╛рдиреНрдп рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ, рдпрджрд┐ this рдлрд╝рдВрдХреНрд╢рди рдмрд╛рдзреНрдп рд╣реИ, рддреЛ call рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛, apply рдпрд╛ bind , рдРрд╕реА рдЪреАрдЬрд╝ рдХреЗ рд▓рд┐рдП рдЬреЛ рдПрдХ рд╡рд╕реНрддреБ рдирд╣реАрдВ рд╣реИ, рдПрдХ рдЖрджрд┐рдо рдкреНрд░рдХрд╛рд░ рдХреЗ рдорд╛рди рдЬреИрд╕реЗ undefined , null , number рдпрд╛ boolean , рдРрд╕рд╛ рдорд╛рди рдПрдХ рд╡рд╕реНрддреБ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

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

рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:

 'use strict'; function fn() {  return this; } console.log(fn() === undefined); console.log(fn.call(2) === 2); console.log(fn.apply(null) === null); console.log(fn.call(undefined) === undefined); console.log(fn.bind(true)() === true); 

рд╕рднреА console.log рдХрдорд╛рдВрдб true рд╕реЗ рдЖрдЙрдЯрдкреБрдЯ рдХрд░реЗрдВрдЧреЗ, рдХреНрдпреЛрдВрдХрд┐ рд╕рдЦреНрдд рдореЛрдб рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдорд╛рди рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╡реИрд╢реНрд╡рд┐рдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдпрджрд┐ this рдЙрд╕ рдорд╛рди рдкрд░ рд╕реЗрдЯ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдирд╣реАрдВ рд╣реИред

тЦН рд╕реБрд░рдХреНрд╖рд╛-рд╕рдВрдмрдВрдзреА рдкрд░рд┐рд╡рд░реНрддрди


рд╕рдЦреНрдд рдореЛрдб рдореЗрдВ, рдЖрдк caller рдФрд░ arguments рдХрд╛рд░реНрдп рдЧреБрдгреЛрдВ рдХреЛ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ caller , рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдПрдХреНрд╕реЗрд╕ рджреЗ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдлрд╝рдВрдХреНрд╢рди рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдХреА caller рд╕рдВрдкрддреНрддрд┐ рд╣рдо рдПрдХреНрд╕реЗрд╕ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

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

рдЗрди рд╕реБрд╡рд┐рдзрд╛рдУрдВ рд╕реЗ рд╕рдВрднрд╛рд╡рд┐рдд рд╕реБрд░рдХреНрд╖рд╛ рдЬреЛрдЦрд┐рдо рдкреИрджрд╛ рд╣реЛрддрд╛ рд╣реИред рдирддреАрдЬрддрди, рдЗрди рдЧреБрдгреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рд╕рдЦреНрдд рдореЛрдб рдореЗрдВ рдирд┐рд╖рд┐рджреНрдз рд╣реИред

 function secretFunction() {  'use strict';  secretFunction.caller;  secretFunction.arguments; } function restrictedRunner() {  return secretFunction(); } restrictedRunner(); 

рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдо рд╕рдЦреНрдд рдореЛрдб рдореЗрдВ, secretFunction.caller рдФрд░ secretFunction.arguments рддрдХ рдкрд╣реБрдВрдЪ secretFunction.caller рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдЗрди рдЧреБрдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдХреЗ рдвреЗрд░ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдЗрд╕ рдХреЛрдб рдХреЛ рдЪрд▓рд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ TypeError рдЕрдкрд╡рд╛рдж TypeError рдЬрд╛рдПрдЧрд╛ред

рд╕рдЦреНрдд рдореЛрдб рдореЗрдВ, рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдЬрд┐рдирдХрд╛ рдЙрдкрдпреЛрдЧ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рднрд╡рд┐рд╖реНрдп рдХреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдХрд╛ рдЙрдкрдпреЛрдЧ рдЪрд░ рдпрд╛ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдЧреБрдгреЛрдВ рдХреЗ рдирд╛рдо рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ: implements , interface , let , package , private , protected , public , static рдФрд░ yield ред

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

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


рд╕рдЦреНрдд рдореЛрдб рдПрдХ рдорд╛рдирдХ рд╣реИ рдЬреЛ рдХрдИ рд╡рд░реНрд╖реЛрдВ рд╕реЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдореЗрдВ рд╣реИред рдпрд╣ рдмрд╣реБрдд рд╡реНрдпрд╛рдкрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕рдорд░реНрдерди рдкреНрд░рд╛рдкреНрдд рд╣реИред рд╕рдЦреНрдд-рдореЛрдб рдХреЛрдб рд╡рд╛рд▓реА рд╕рдорд╕реНрдпрд╛рдПрдВ рдХреЗрд╡рд▓ рдкреБрд░рд╛рдиреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ рдЗрдВрдЯрд░рдиреЗрдЯ рдПрдХреНрд╕рдкреНрд▓реЛрд░рд░ред

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

рдкреНрд░рд┐рдп рдкрд╛рдардХреЛрдВ! рдХреНрдпрд╛ рдЖрдк рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП JS рдХреЛрдб рд▓рд┐рдЦрддреЗ рд╕рдордп рд╕рдЦреНрдд рдореЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ?


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


All Articles