Switch և Ցիկլեր
"Կրկնությունը գիտության մայրն է, իսկ ընտրությունը՝ արդյունավետության գրավականը:"
Switch Կոնստրուկցիա
switch-ը փոխարինում է մի քանի if-երին և
կատարում է խիստ համեմատություն (===):
Կառուցվածք
switch(x) {case
'val1':
... Կատարվող գործողությունները
break;case
'val2':
... Կատարվող գործողությունները
break;default:
... Կատարվող գործողությունները
}
Break-ի Կարևորությունը
Առանց break-ի, կոդը կշարունակի կատարվել
հաջորդ case-երի մեջ՝ անկախ պայմանից:
Ցիկլեր (while, do...while, for)
Ցիկլերը թույլ են տալիս կատարել նույն կոդը բազմաթիվ անգամներ:
for Ցիկլ
for (let i = 0; i < 3; i++)
{alert(i);}
սկիզբ, պայման, քայլ:
while Ցիկլ
while (i < 3) {alert(i);i++;
}
break & continue
break-ը դուրս է գալիս ցիկլից, իսկ
continue-ն թռչում է դեպի հաջորդ քայլը:
do...while
Կոդը կատարվում է գոնե մեկ անգամ, նույնիսկ եթե պայմանը սխալ է:
Լեքսիկական Միջավայր (Lexical Environment)
JavaScript-ում յուրաքանչյուր կատարվող ֆունկցիա, կոդի բլոկ կամ սկրիպտ ունի իրեն կցված ներքին օբյեկտ, որը կոչվում է Lexical Environment:
Կառուցվածք
- Environment Record: Պահպանում է բոլոր տեղային փոփոխականները:
- Outer Reference: Հղում դեպի արտաքին (outer) միջավայր:
Ինչպե՞ս է աշխատում
Երբ փնտրում ենք փոփոխական, JS-ը նախ նայում է ներքին միջավայրում, ապա՝ արտաքինում, մինչև հասնի Global միջավայրին:
Ինչպե՞ս է աշխատում Scope Chain-ը
Այս դիագրամը պատկերում է JavaScript-ի լեքսիկական հիերարխիան կոդի կատարման պահին: Այն ցույց է տալիս, թե ինչպես են փոփոխականները հասանելի դառնում տարբեր կոնտեքստներում՝ շնորհիվ շղթայական կապի:
1. Environment Record
Յուրաքանչյուր միջավայր (Global, Outer, Inner) ունի իր Environment Record-ը: Սա այն վայրն է, որտեղ JS շարժիչը կատարման նախնական փուլում (Instantiation phase) գրանցում է տվյալ տիրույթում հայտարարված բոլոր փոփոխականները և ֆունկցիաները:
-
Inner: Ունի իր սեփական
innerVar-ը: -
Outer: Պահում է
outerVar-ը: - Global: Հանդիսանում է ամենավերին մակարդակը:
2. Outer Reference
Յուրաքանչյուր Lexical Environment ունի հղում ([[OuterEnv]]
սլաքը), որը մատնանշում է այն միջավայրը, որտեղ տվյալ
կոդը ֆիզիկապես գրված է:
- Inner-ի հղումը տանում է դեպի Outer:
- Outer-ի հղումը տանում է դեպի Global:
- Global-ի հղումը
nullէ:
3. Որոնման մեխանիզմը (Resolve Binding)
Երբ փորձում եք օգտագործել որևէ փոփոխական Inner տիրույթում, JavaScript-ը կատարում է հետևյալ քայլերը.
- Փնտրում է այն լոկալ Environment Record-ում:
- Եթե չի գտնում, օգտվում է Outer Reference-ից և բարձրանում մեկ մակարդակ վերև:
- Այս գործընթացը կրկնվում է մինչև Global միջավայր:
Կարևոր է: Այս շղթան կայուն է և որոշվում է կոդը գրելու պահին (Lexical Scoping): Սա հենց այն հիմքն է, որի վրա կառուցվում են Closures-ը: