рдирдорд╕реНрдХрд╛рд░, рд╣реЗрдмреНрд░!
рдореИрдВрдиреЗ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдХреБрдЫ рднреА рдирд╣реАрдВ рд▓рд┐рдЦрд╛ рд╣реИ, рдкрд┐рдЫрд▓реЗ рдХреБрдЫ рд╣рдлреНрддреЛрдВ рд╕реЗ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ рдмрд╣реБрдд рдХрд╛рдо рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдм рдореЗрд░реЗ рдкрд╛рд╕ рдЦрд╛рд▓реА рд╕рдордп рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЖрдкрдХреЛ рдПрдХ рдирдпрд╛ рд▓реЗрдЦ рдкреЗрд╢ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рд╣реИред
рдЖрдЬ рд╣рдо рдкреНрд░рдореБрдЦ рдПрдХреНрдорд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦреЗрдВрдЧреЗ, рд▓реЗрдХреНрд╕рд┐рдХрд▓ рдкрд░реНрдпрд╛рд╡рд░рдг рдФрд░ рдХреНрд▓реЛрдЬрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗред рдХреНрд▓реЛрдЬрд░ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рд▓реЗрдХреНрд╕рд┐рдХрд▓ рд╡рд╛рддрд╛рд╡рд░рдг рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЛ рд╕рдордЭрдирд╛ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдФрд░ рдЬреЗрдПрд╕ рд╡рд░реНрд▓реНрдб (рдЬреЛ рдПрдХреНрдорд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реНрдкреЗрд╕рд┐рдлрд┐рдХреЗрд╢рди рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ) рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реА рдЕрдЪреНрдЫреА рддрдХрдиреАрдХреЛрдВ рдФрд░ рддрдХрдиреАрдХреЛрдВ рдХреА рдиреАрдВрд╡ рдмрдВрдж рд╣реИред
рддреЛ рдЪрд▓рд┐рдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред
рд▓реЗрдХреНрд╕рд┐рдХрд▓ рдПрдирд╡рд╛рдпрд░рдирдореЗрдВрдЯ (LexicalEnvironment, LO, LE)
рдЖрдзрд┐рдХрд╛рд░рд┐рдХ ES6 рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдЗрд╕ рд╢рдмреНрдж рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ:
рд▓реЗрдХреНрд╕рд┐рдХрд▓ рдПрдирд╡рд╛рдпрд░рдирдореЗрдВрдЯ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдирд╛рдореЛрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрдм ECMAScript рдХреЛрдб рдиреЗрд╕реНрдЯрд┐рдВрдЧ рдХреЗ рд▓реЗрдХреНрд╕рд┐рдХрд▓ рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЪрд░ рдФрд░ рдХрд╛рд░реНрдпреЛрдВ рдХреА рдЦреЛрдЬ рдХреА рдЬрд╛рддреА рд╣реИред рд▓реЗрдХреНрд╕рд┐рдХрд▓ рдПрдирд╡рд╛рдпрд░рдирдореЗрдВрдЯ рдореЗрдВ рдкрд░реНрдпрд╛рд╡рд░рдг рдХрд╛ рд░рд┐рдХреЙрд░реНрдб рд╣реЛрддрд╛ рд╣реИ рдФрд░ рд╕рдВрднрд╡рддрдГ, рдмрд╛рд╣рд░реА рд▓реЗрдХреНрд╕рд┐рдХрд▓ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд╢рдХреНрдд рд╕рдВрджрд░реНрдн рд╣реЛрддрд╛ рд╣реИред
рдЖрдЗрдП рдирдЬрд╝рджреАрдХ рд╕реЗ рджреЗрдЦреЗрдВред
рдореИрдВ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд╢рд╛рдмреНрджрд┐рдХ рд╡рд╛рддрд╛рд╡рд░рдг рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░реВрдВрдЧрд╛ рдЬреЛ рд╕рдВрджрд░реНрдн рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛рдУрдВ рдХреЗ рдХрдиреЗрдХреНрд╢рди рдХреЛ рдЙрдирдХреЗ рдЕрд░реНрде рдХреЗ рд╕рд╛рде рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдЗрд╕ рд╕рдВрджрд░реНрдн рдХреЗ рджрд╛рдпрд░реЗ рдореЗрдВ рдШреЛрд╖рд┐рдд рдЪрд░, рдХрд╛рд░реНрдпреЛрдВ, рд╡рд░реНрдЧреЛрдВ рдХрд╛ рдПрдХ рдкреНрд░рдХрд╛рд░ рд╣реИред
рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ, LO рджреЛ рдЧреБрдгреЛрдВ рд╡рд╛рд▓реА рдПрдХ рд╡рд╕реНрддреБ рд╣реИ:
- рдкрд░реНрдпрд╛рд╡рд░рдг рд░рд┐рдХреЙрд░реНрдб (рдпрд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдБ рд╕рднреА рд╡рд┐рдЬреНрдЮрд╛рдкрди рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИрдВ)
- LO рдЬрдирд░реЗрдЯрд┐рд╡ рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХред
рд╡рд░реНрддрдорд╛рди рд╕рдВрджрд░реНрдн рдХреЗ рдореВрд▓ рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдВрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ, рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рд╣рдо рдореВрд▓ рд╕рдВрджрд░реНрдн рдХреЗ "рджрд╛рджрд╛ рд╕рдВрджрд░реНрдн" рдХрд╛ рд▓рд┐рдВрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕реА рддрд░рд╣, рд╡реИрд╢реНрд╡рд┐рдХ рд╕рдВрджрд░реНрдн рдореЗрдВ, рдЬрд┐рд╕рдХреЗ рдореВрд▓ рдХреЗ рд╕рдВрджрд░реНрдн рд╢реВрдиреНрдп рд╣реЛрдВрдЧреЗред рдЗрд╕ рдкрд░рд┐рднрд╛рд╖рд╛ рд╕реЗ рдпрд╣ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИ рдХрд┐ рд▓реЗрдХреНрд╕рд┐рдХрд▓ рд╡рд╛рддрд╛рд╡рд░рдг рдЗрдХрд╛рдИ рдХреА рдЙрддреНрдкрддреНрддрд┐ рдХреЗ рд╕рдВрджрд░реНрднреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрдмрдВрдз рд╣реИред рдлрд╝рдВрдХреНрд╢рдВрд╕ рдореЗрдВ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╕реНрдХреЛрдкрдЪреЗрди рд▓реЗрдХреНрд╕рд┐рдХрд▓ рд╡рд╛рддрд╛рд╡рд░рдг рдХрд╛ рдПрдХ рдПрдирд╛рд▓реЙрдЧ рд╣реИред рд╣рдордиреЗ
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рд╕реНрдХреЛрдкреНрдЪрд┐рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ
рдмрд╛рдд рдХреА рд╣реИ ред
let x = 10; let y = 20; const foo = z => { let x = 100; return x + y + z; } foo(30);
рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ, рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдирд╛рдореЛрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реНрдХреЛрдкрдЪрд┐рди рдореЗрдВ рдШрдЯрд┐рдд рд╣реЛрдЧреА, рдЕрд░реНрдерд╛рддреНред рдПрд▓рдУ рд▓реВрдк рдореЗрдВ рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдЕрдиреБрдХреНрд░рдорд┐рдХ рдорддрджрд╛рди рддрдм рддрдХ рд╣реЛрдЧрд╛ рдЬрдм рддрдХ рд╡рд╛рдВрдЫрд┐рдд рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдирд╣реАрдВ рдорд┐рд▓ рдЬрд╛рддрд╛ред рдпрджрд┐ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдирд╣реАрдВ рдорд┐рд▓рд╛, рддреЛ ReferenceErrorред
рд╕рдВрджрд░реНрдн рдмрдирд╛рдиреЗ рдХреЗ рдЪрд░рдг рдореЗрдВ рд▓реЗрдХреНрд╕рд┐рдХрд▓ рд╡рд╛рддрд╛рд╡рд░рдг рдмрдирд╛рдпрд╛ рдФрд░ рднрд░рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬрдм рд╡рд░реНрддрдорд╛рди рд╕рдВрджрд░реНрдн рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рд╕рдорд╛рдкреНрдд рдХрд░ рджреЗрддрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рдХреЙрд▓ рд╕реНрдЯреИрдХ рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рд▓реЗрдХреНрд╕рд┐рдХрд▓ рд╡рд╛рддрд╛рд╡рд░рдг рддрдм рддрдХ рдЬрд╛рд░реА рд░рд╣ рд╕рдХрддрд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдЗрд╕рдореЗрдВ рдХрдо рд╕реЗ рдХрдо рдПрдХ рд▓рд┐рдВрдХ рд╣реЛред рдпрд╣ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдХреЗ рдбрд┐рдЬрд╛рдЗрди рдХреЗ рдЖрдзреБрдирд┐рдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рдлрд╛рдпрджреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдмрд╛рдд рдХрд░рдиреЗ рд▓рд╛рдпрдХ рд╣реИ!
рд╕реНрдЯреИрдХ рдСрд░реНрдЧрдирд╛рдЗрдЬреЗрд╢рди рдмрдирд╛рдо рдбрд╛рдпрдирд╛рдорд┐рдХрд▓реА рд╢реЗрдпрд░реНрдб рдореЗрдореЛрд░реА
рд╕реНрдЯреИрдХ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ, рд╕реНрдерд╛рдиреАрдп рдЪрд░ рдХреЛ рд╕реНрдЯреИрдХ рдкрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдлрд╝рдВрдХреНрд╢рди рд╕рдХреНрд░рд┐рдп рд╣реЛрдиреЗ рдкрд░ рдлрд┐рд░ рд╕реЗ рднрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрдм рдлрд╝рдВрдХреНрд╢рди рдмрд╛рд╣рд░ рдирд┐рдХрд▓рддрд╛ рд╣реИ, рддреЛ рдЗрд╕рдХреЗ рд╕реНрдерд╛рдиреАрдп рдЪрд░ рд╕реНрдЯреИрдХ рд╕реЗ рд╣рдЯрд╛ рджрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред
рдПрдХ рд╕реНрдЯреИрдХреНрдб рд╕рдВрдЧрдарди рдХреЗ рд╕рд╛рде, рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рдПрдХ рд╕реНрдерд╛рдиреАрдп рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рдпрд╛ рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдореБрдлреНрдд рдЪрд░ рдореЗрдВ рдХреЙрд▓ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред
рдПрдХ рдореБрдХреНрдд рдЪрд░ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рдЪрд░ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рди рддреЛ рдПрдХ рдФрдкрдЪрд╛рд░рд┐рдХ рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИ рдФрд░ рди рд╣реА рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдерд╛рдиреАрдп рдЪрд░ рд╣реИред
function testFn() { var locaVar = 10;
рд╕реНрдЯреИрдХ рдСрд░реНрдЧреЗрдирд╛рдЗрдЬреЗрд╢рди рдХреЗ рд╕рд╛рде, рди рддреЛ рдПрдХреНрд╕рдЯрд░реНрдирд▓ рд▓реЗрдХреНрд╕рд┐рдХрд▓ рдПрдВрд╡рд╛рдпрд░рдореЗрдВрдЯ рдореЗрдВ рд▓реЛрдХреЗрд╡рд░ рд╕рд░реНрдЪ рдФрд░ рди рд╣реА рдЗрдирд░рдлреИрди рдлрдВрдХреНрд╢рди рдХреА рд╡рд╛рдкрд╕реА рд╕рдВрднрд╡ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрдирд░рдлрд╝рди рднреА рдЯреЗрд╕реНрдЯрдлрд╝рди рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдерд╛рдиреАрдп рдШреЛрд╖рдгрд╛ рд╣реИред TestFn рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдкрд░, рдЗрд╕рдХреЗ рд╕рднреА рд╕реНрдерд╛рдиреАрдп рдЪрд░ рдмрд╕ рд╕реНрдЯреИрдХ рд╕реЗ рд╣рдЯрд╛ рджрд┐рдП рдЬрд╛рдПрдВрдЧреЗред
рдЗрд╕рд▓рд┐рдП, рдПрдХ рдФрд░ рдЕрд╡рдзрд╛рд░рдгрд╛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХреА рдЧрдИ - рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдЖрд╡рдВрдЯрд┐рдд рд╕реНрдореГрддрд┐ (рдвреЗрд░, рд╣реАрдк) + рдХрдЪрд░рд╛ рдХрд▓реЗрдХреНрдЯрд░ + рд╕рдВрджрд░реНрдн рдЧрд┐рдирддреА рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ред рдЗрд╕ рдЕрд╡рдзрд╛рд░рдгрд╛ рдХрд╛ рд╕рд╛рд░ рд╕рд░рд▓ рд╣реИ: рдЬрдм рддрдХ рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХрд╛ рдХрдо рд╕реЗ рдХрдо рдПрдХ рд╕рдВрджрд░реНрдн рд╣реЛрддрд╛ рд╣реИ, рддрдм рддрдХ рдЗрд╕реЗ рдореЗрдореЛрд░реА рд╕реЗ рдбрд┐рд▓реАрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг
рдпрд╣рд╛рдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛
рд╣реИ ред
рдмрдВрдж (рдХреНрд▓реЛрдЬрд░)
рдПрдХ рдмрдВрдж рдХреЛрдб рдХреЛрдб рдХрд╛ рдПрдХ рд╕рдВрдпреЛрдЬрди рд╣реИ рдФрд░ рдЙрд╕ рд╕рдВрджрд░реНрдн рдХрд╛ рдбреЗрдЯрд╛ рдЬрд┐рд╕рдореЗрдВ рдмреНрд▓реЙрдХ рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддреНред рдпрд╣ рдПрд▓рдУ рдпрд╛ рд╕реБрдУрдкрдЪрд╛рдЪрд┐рди рдХреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрддреНрдкрдиреНрди рд╕рдВрджрд░реНрднреЛрдВ рдХреЗ рд╕рд╛рде рдЗрдХрд╛рдИ рдХрд╛ рд╕рдВрдмрдВрдз рд╣реИред
рдореБрдЭреЗ рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдПрдХ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛
рд▓реЗрдЦ рдЙрджреНрдзреГрдд рдХрд░реЗрдВ:
function person() { let name = 'Peter'; return function displayName() { console.log(name); }; } let peter = person(); peter();
рдЬрдм рд╡реНрдпрдХреНрддрд┐ рдлрд╝рдВрдХреНрд╢рди рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдВрджрд░реНрдн рдФрд░ рд╢рд╛рдмреНрджрд┐рдХ рд╡рд╛рддрд╛рд╡рд░рдг рдмрдирд╛рддрд╛ рд╣реИред рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдпрд╣ рдбрд┐рд╕реНрдкреНрд▓реЗрдиреЗрдо рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд▓реМрдЯрд╛рдПрдЧрд╛ рдФрд░ рдЪрд░ рдкреАрдЯрд░ рдХреЛ рд╕реМрдВрдкрд╛ рдЬрд╛рдПрдЧрд╛ред
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЙрд╕рдХрд╛ рд╢рд╛рдмреНрджрд┐рдХ рд╡рд╛рддрд╛рд╡рд░рдг рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:
personLexicalEnvironment = { environmentRecord: { name : 'Peter', displayName: < displayName function reference> } outer: <globalLexicalEnvironment> }
рдЬрдм рд╡реНрдпрдХреНрддрд┐ рдХрд╛рд░реНрдп рдкреВрд░рд╛ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЗрд╕рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдВрджрд░реНрдн рд╕реНрдЯреИрдХ рд╕реЗ рдмрд╛рд╣рд░ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рд╢рд╛рдмреНрджрд┐рдХ рд╡рд╛рддрд╛рд╡рд░рдг рдЕрднреА рднреА рд╕реНрдореГрддрд┐ рдореЗрдВ рдмрдирд╛ рд░рд╣реЗрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХреЗ рдЖрдВрддрд░рд┐рдХ рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рд╢рд╛рдмреНрджрд┐рдХ рд╡рд╛рддрд╛рд╡рд░рдг рдЗрд╕рдХрд╛ рд╕рдВрджрд░реНрдн рджреЗрддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЗрд╕рдХреЗ рдЪрд░ рдЕрднреА рднреА рдореЗрдореЛрд░реА рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реЛрдВрдЧреЗред
рдЬрдм рдкреАрдЯрд░ рдлрд╝рдВрдХреНрд╢рди рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрддрд╛ рд╣реИ (рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдбрд┐рд╕реНрдкреНрд▓реЗрдирд╛рдо рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рд╕рдВрджрд░реНрдн рд╣реИ), рддреЛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдВрджрд░реНрдн рдФрд░ рд╢рд╛рдмреНрджрд┐рдХ рд╡рд╛рддрд╛рд╡рд░рдг рдмрдирд╛рддрд╛ рд╣реИред
рддреЛ рдЙрд╕рдХрд╛ рд╢рд╛рдмреНрджрд┐рдХ рд╡рд╛рддрд╛рд╡рд░рдг рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:
displayNameLexicalEnvironment = { environmentRecord: { } outer: <personLexicalEnvironment> }
рдбрд┐рд╕реНрдкреНрд▓реЗрдирд╛рдо рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдХреЛрдИ рдЪрд░ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рдХрд╛ рдкрд░реНрдпрд╛рд╡рд░рдг рд░рд┐рдХреЙрд░реНрдб рдЦрд╛рд▓реА рд╣реЛрдЧрд╛ред рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рджреМрд░рд╛рди, рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓реЗрдХреНрд╕рд┐рдХрд▓ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдирд╛рдо рдЪрд░ рдЦреЛрдЬрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдЧрд╛ред
рдЪреВрдВрдХрд┐ рдбрд┐рд╕реНрдкреНрд▓реЗрдиреЗрдо рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓реЗрдХреНрд╕рд┐рдХрд▓ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдХреЛрдИ рдЪрд░ рдирд╣реАрдВ рд╣реИрдВ, рдпрд╣ рдмрд╛рд╣рд░реА рд▓реЗрдХреНрд╕рд┐рдХрд▓ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдЦреЛрдЬ рдХрд░реЗрдЧрд╛, рдЕрд░реНрдерд╛рдд, рд╡реНрдпрдХреНрддрд┐ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рд▓реЗрдХреНрд╕рд┐рдХрд▓ рд╡рд╛рддрд╛рд╡рд░рдг, рдЬреЛ рдЕрднреА рднреА рд╕реНрдореГрддрд┐ рдореЗрдВ рд╣реИред рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдпрд╣ рдЪрд░ рдорд┐рд▓реЗрдЧрд╛ рдФрд░ рдирд╛рдо рдХрдВрд╕реЛрд▓ рдкрд░ рдЫрдкрд╛ рд╣реИред
рдИрдПрд╕ рдореЗрдВ рдПрдХ рдмрдВрдж рдХрд░рдиреЗ рдХреА рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╡рд┐рд╢реЗрд╖рддрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рд╕реНрдереИрддрд┐рдХ рдЧреБрдВрдЬрд╛рдЗрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ (рдХрдИ рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдЬреЛ рдмрдВрдж рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рд╕реНрдерд┐рддрд┐ рдЕрд▓рдЧ рд╣реИ)ред
рдПрдХ рдЙрджрд╛рд╣рд░рдг:
var a = 5; function testFn() { alert(a); } (function(funArg) { var a = 20; funArg();
рдПрдХ рдЕрдиреНрдп рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрдВрдж рд╕рдВрдкрддреНрддрд┐ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реНрдерд┐рддрд┐ рд╣реИ:
var first; var second; function testFn() { var a = 10; first = function() { return ++a; } second = function() { return --a; } a = 2; first();
рдпрд╛рдиреА рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдХрдИ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЗ рдХреНрд▓реЛрдЬрд░ рдореЗрдВ рдореМрдЬреВрдж рдлреНрд░реА рд╡реИрд░рд┐рдПрдмрд▓ рдЙрдирдХреЗ рджреНрд╡рд╛рд░рд╛ рд░реЗрдлрд░реЗрдВрд╕ рд╕реЗ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдирд┐рд╖реНрдХрд░реНрд╖
рдЗрд╕ рд▓реЗрдЦ рдХреЗ рдврд╛рдВрдЪреЗ рдореЗрдВ, рд╣рдордиреЗ рдПрдХреНрдорд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рджреЛ рдХреЗрдВрджреНрд░реАрдп рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХрд╛ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рд╣реИ: рд▓реЗрдХреНрд╕рд┐рдХрд▓ рдкрд░реНрдпрд╛рд╡рд░рдг рдФрд░ рдХреНрд▓реЛрдЬрд░ред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпреЗ рджреЛрдиреЛрдВ рд╡рд┐рд╖рдп рдЬреНрдпрд╛рджрд╛ рд╡реНрдпрд╛рдкрдХ рд╣реИрдВред рдпрджрд┐ рд╕рдореБрджрд╛рдп рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рд╢рд╛рдмреНрджрд┐рдХ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рдмреАрдЪ рдорддрднреЗрджреЛрдВ рдХрд╛ рдЕрдзрд┐рдХ рдЧрд╣рд░рд╛рдИ рд╕реЗ рд╡рд┐рд╡рд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ рдпрд╛ рдпрд╣ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ рдХрд┐ v8 рдПрдХ рдХреНрд▓реЛрдЬрд░ рдХреИрд╕реЗ рдмрдирд╛рддрд╛ рд╣реИ, рддреЛ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рд┐рдЦреЗрдВред