рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рдкреНрд░рд╕реНрддреБрдд рдХрд░рддреЗ рд╣реБрдП рдордзреНрдпрдо.рдлреНрд░реАрдбреЗрдХреЛрдбреЗрдореНрдк.рдХреЙрдо рдкрд░ рдкреНрд░рдХрд╛рд╢рд┐рдд рдкрд░рдерд╛рди рдерд┐рдпрд╛рдЧрд▓рд┐рдВрдЧрдо рдХреЗ рдПрдХ рд▓реЗрдЦ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рд╣реИред рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреА рд╣реИ? рдмрд┐рд▓реНрд▓реА рдХреЗ рдиреАрдЪреЗ рджреЗрдЦреЛ!
Unsplash рдХреЗ рд╕рд╛рде рдлреЛрдЯреЛ рдСрд╕реНрдЯрд┐рди рдбрд┐рд╕реНрдЯрд▓рдПрдХ рдХреНрд▓реЛрдЬрд░ рдХрд╛рд░реНрдп рдХреЗ рд╕рдордп рд╕рднреА рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХрд╛ рдПрдХ рд╕реНрдХреЛрдк рд╣реЛрддрд╛ рд╣реИред рдХреНрд▓реЛрдЬрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдХ рдиреЗрд╕реНрдЯреЗрдб рдлрд╝рдВрдХреНрд╢рди, рдпрд╛рдиреА рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдВрджрд░ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдмрд╛рд╣рд░реА рдлрд╝рдВрдХреНрд╢рди рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рднреА рдЖрдВрддрд░рд┐рдХ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдкрд╛рд╕ рдмрд╛рд╣рд░реА рдлрд╝рдВрдХреНрд╢рди рдХреЗ рджрд╛рдпрд░реЗ рдореЗрдВ рдЪрд░ рддрдХ рдкрд╣реБрдВрдЪ рд╣реЛрдЧреАред (рдпрд╣
рдХреНрд▓реЛрдЬрд░ рд╣реИ рдЬреЛ рдЗрд╕ рдПрдХреНрд╕реЗрд╕ рдХреЛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред) рд╣рд░ рдмрд╛рд░ рдЬрдм рдХреЛрдИ рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдХреНрд▓реЛрдЬрд░ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдЖрдк рдХреНрд▓реЛрдЬрд░ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЛ рд╕рдордЭрдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВ, рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдХрд┐ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╕реНрдХреЛрдк рдЪреЗрди рдХреНрдпрд╛ рд╣реИрдВред
рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рджреЛ рдкреНрд░рдХрд╛рд░ рдХреЗ рджреГрд╢реНрдп рдХреНрд╖реЗрддреНрд░ рд╣реИрдВ: рд╡реИрд╢реНрд╡рд┐рдХ рдФрд░ рд╕реНрдерд╛рдиреАрдпред
рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ, рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдВрджрд░ рдПрдХ рдЪрд░ рдмрд╛рд╣рд░реА рд░реВрдк рд╕реЗ рд╕реБрд▓рдн рдирд╣реАрдВ рд╣реИ - рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдмреНрд▓реЙрдХ рдХреЗ рднреАрддрд░ рдЪрд░ (
if
рдФрд░
while
рдЬреИрд╕реА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ)ред
рдЗрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдПрдХ рд╕реНрдХреЛрдк рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдмреНрд▓реЙрдХ рдирд╣реАрдВ рд╣реИред
var a = 10; function app(){ var b = 2; console.log(a);
рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬрд╛рдирддреЗ рд╣реИрдВ,
рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ рд╡реИрд░рд┐рдПрдмрд▓ рд╣реИ, рдФрд░
рдмреА рд╕реНрдерд╛рдиреАрдп рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓
app
рдлрд╝рдВрдХреНрд╢рди рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕реНрдерд╛рдиреАрдп рджрд╛рдпрд░реЗ рдХреЗ рдмрд╛рд╣рд░, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕реНрдерд╛рдиреАрдп рдЪрд░ рддрдХ рдкрд╣реБрдВрдЪ рдирд╣реАрдВ рд╣реИред
рдиреЗрд╕реНрдЯреЗрдб рдлрд╝рдВрдХреНрд╢рди (рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдВрджрд░ рдлрд╝рдВрдХреНрд╢рди) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ
var a = 10; function app(){ var b = 2; var d = 3; function add(){ var c = a + b; } return add; } var x = app(); console.dir(x);
рдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ,
app
рдкреИрд░реЗрдВрдЯ рдлрд╝рдВрдХреНрд╢рди рд╣реИ,
add
рдЪрд╛рдЗрд▓реНрдб рдлрд╝рдВрдХреНрд╢рди рд╣реИред
- рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ рдХреЗ рдмрдЬрд╛рдп, рдХрдВрд╕реЛрд▓.рдЖрдИрдЖрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЪрдпрдирд┐рдд рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕рднреА рдЧреБрдгреЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
- рдЪрд░ x рдХреЛ
app
рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╕реМрдВрдкрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рдлрд┐рд░ add
рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд▓реМрдЯрд╛рддрд╛ рд╣реИред рдпрд╣ рдЖрдкрдХреЛ add
рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕рднреА рдЧреБрдгреЛрдВ рдХреЛ рджреЗрдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдХрдВрд╕реЛрд▓ рдЦреЛрд▓рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ
Scopes
рдбреЗрдЯрд╛ рдРрд░реЗ рдХреЗ рдЕрдВрджрд░
Closure
рдСрдмреНрдЬреЗрдХреНрдЯ рдорд┐рд▓ рдЬрд╛рдПрдЧрд╛ред

рдЪреВрдБрдХрд┐
add
internal function рдореЗрдВ рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕
b рдФрд░
d рд╣реИ рдЬреЛ рдПрдХреНрд╕рдЯрд░реНрдирд▓ рдлрдВрдХреНрд╢рди рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ, рдЗрди рджреЛрдиреЛрдВ рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХреЛ
Closure
рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рд░реЗрдлрд░реЗрдВрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПрдЧрд╛ред
рдПрдХ рдФрд░ рдмрдВрдж рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред
var a = 10; var startFunc; function app(){ var b = 2; function add(){ var c = a + b; console.log(c); } startFunc = add(); } app();
startFunc
рдЧреНрд▓реЛрдмрд▓ рдлрдВрдХреНрд╢рди startFunc
add
рдлрдВрдХреНрд╢рди рд╕реМрдВрдкрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рдкреИрд░реЗрдВрдЯ рдлрдВрдХреНрд╢рди app
рдХрд╛ рдПрдХ рдмрдЪреНрдЪрд╛ рд╣реИред- рдРрдк рдлрдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд╣реА рдпрд╣ рд╕рдВрднрд╡ рд╣реЛ рдкрд╛рддрд╛ рд╣реИред рдЕрдиреНрдпрдерд╛,
startFunc
рдлрд╝рдВрдХреНрд╢рди рдПрдХ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдорд╛рди рдХреЗ рдмрд┐рдирд╛ рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рдХреА рддрд░рд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░реЗрдЧрд╛ред
рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдХреНрд▓реЛрдЬрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ
рд╣рдо рдореЗрдВ рд╕реЗ рдХрдИ, рдХреЛрдб рд▓рд┐рдЦрддреЗ рд╕рдордп рдХреНрд▓реЛрдЬрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирд╣реАрдВ рд╕рдордЭрддреЗ рд╣реИрдВ рдХрд┐ рд╡реЗ рдРрд╕рд╛ рдХреНрдпреЛрдВ рдХрд░рддреЗ рд╣реИрдВред рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ-рдУрд░рд┐рдПрдВрдЯреЗрдб рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдкрд╛рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ
рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ ,
рд╕рдВрд░рдХреНрд╖рд┐рдд рдФрд░
рдирд┐рдЬреА рд╕рдВрд╢реЛрдзрдХ рдХрд╛ рдЕрднрд╛рд╡ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдмрд╛рд╣рд░реА рдХреЛрдб рдХреЗ рд▓рд┐рдП рдирд╛рдо рд╕реНрдерд╛рди рддрдХ рдкрд╣реБрдВрдЪ рдХреЛ рдЕрд╡рд░реБрджреНрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдХрд╛рд░реНрдпреЛрдВ рдХреА рд╕рд╣рд╛рдпрддрд╛ рдХрд╛ рд╕рд╣рд╛рд░рд╛ рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рд╣реИрдВред
рдФрд░ рдЪреВрдВрдХрд┐ рд╣рдо рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ - рдШреЛрд╖рдгрд╛ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж
рдлрд╝рдВрдХреНрд╢рди (IIFE) рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ ред рдЙрд╕реЗ рдмреБрд▓рд╛рдиреЗ рдХреА рднреА рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИред
IIFE рд╕рд┐рдВрдЯреИрдХреНрд╕ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
(function(){
рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:
var studnetEnrollment = (function () {
count
рдФрд░
prefix
рджреЛ рдирд┐рдЬреА рдЪрд░ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдмрджрд▓рд╛ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЙрдирдХреЗ рд▓рд┐рдП рдкреНрд░рд╡реЗрд╢ рдХреЗрд╡рд▓ рдЖрдВрддрд░рд┐рдХ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдЦреБрд▓рд╛ рд╣реИ (рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣
innerFunc
рдлрд╝рдВрдХреНрд╢рди рд╣реИ)ред
- рдкрд╣рд▓реА рдмрд╛рд░
studentEnrollment
рдлрдВрдХреНрд╢рди рдХреЛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, studentEnrollment
рдлрд╝рдВрдХреНрд╢рди count
рд╡реЗрд░рд┐рдПрдмрд▓ рдХреЗ рдорд╛рди рдХреЛ 1 рддрдХ рдмрдврд╝рд╛ рджреЗрддрд╛ рд╣реИред - рджреВрд╕рд░реА рдмрд╛рд░,
count
1 рд╕реЗ 2 рддрдХ рдмрдврд╝ рдЬрд╛рддреА рд╣реИред - рдпрд╣ рд╕рдм рдмрдВрдж рд╣реЛрдиреЗ рд╕реЗ рд╣реА рд╕рдВрднрд╡ рд╣реИред
рдирд┐рд╖реНрдХрд░реНрд╖
рдПрдХ рд╕рдорд╛рдкрди рдПрдХ рдмрд╛рд╣рд░реА рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЪрд░ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдХрд╛рд░рдг рдЖрдВрддрд░рд┐рдХ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рджрд╛рдпрд░рд╛ рдЗрди рдЪрд░ рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╡реИрд╢реНрд╡рд┐рдХ рдирд╛рдо рд╕реНрдерд╛рди рдХреА рд╕реБрд░рдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИред
рдХреНрд▓реЛрдЬрд░ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рд╕реНрд╡рдЪреНрдЫ рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ - рдЬреИрд╕реЗ рдСрдмреНрдЬреЗрдХреНрдЯ-рдУрд░рд┐рдПрдВрдЯреЗрдб рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд▓реИрдВрдЧреНрд╡реЗрдЬ, рдХреЛрдб рдЬрд┐рд╕рдореЗрдВ рд╡реИрд╢реНрд╡рд┐рдХ рдФрд░ рд╕реНрдерд╛рдиреАрдп рдЪрд░ рднреНрд░рдорд┐рдд рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред
рдПрдХ рдЕрдЪреНрдЫрд╛ рдХреЛрдбрд┐рдВрдЧ рд╣реИ!