Skip to content

Latest commit

 

History

History
19 lines (10 loc) · 8.23 KB

JavaScript Strict Mode Directive and Its Impact.hy.md

File metadata and controls

19 lines (10 loc) · 8.23 KB

Խիստ ռեժիմը JavaScript-ում ("Strict mode"): Ինչու է անհրաժեշտ այն ակտիվացնել և ինչ առավելություններ ունի «սովորական» ռեժիմի հետ համեմատած:

JavaScript լեզուն ստեղծվել է հեռավոր 1995 թվականին։ Որպեսզի վեբ դիզայներների համար հնարավորինս հեշտ լինի սովորել այն, լեզվի սկզբնական տարբերակում հրաժարվեցին բարդ կոնստրուկցիաներ կիրառելուց, իսկ սուղ ժամանակը, որում խնդիր էր դրվել ստեղծել լեզուն, պատճառ դարձավ, որ լեզվում տեղ գտնեն մի շարք սխալներ և անկատարություններ։ Այդ ժամանակաշրջանում կայքերը չափազանց պարզ կառուցվածք ունեյին, և ավելի շատ հիշեցնում էին այն, ինչ այսօր ընդունված է անվանել կայք-այցեքարտեր։ Հիմնական լոգիկան գրվում էր բեքենդում, դեռևս չկար AJAX տեխնոլոգիան և JavaScript-ից շատ բան չէր էլ պահանջվում, այն ավելի շուտ հանդիսանում էր միջոց կայքերին մի փոքր ինտերակտիվություն հաղորդելու համար։

Հետագայում վեբի թռիչքաձև զարգացումը բերեց նրան, որ JavaScript-ի զարգացումն ու բարդացումը անխուսափելի էր։ Լեզվում ներդրվում էին նորանոր բարդ կառուցվածքներ և ֆունկցիաներ, սակայն լեզվի ընդհանուր կառուցվածքային հիմքը շարունակում էր մնալ նույնը, որպեսզի չխախտվի հետադարձ համապատասխանելիությունը, և նախկինում գրված սքրիփթները «չփլվեն», այլ շարունակեն նույնքան լավ աշխատել։ Այսինքն նոր ֆունկցիոնալության ավելացումը ոչ մի կերպ չէր ազդում նախկինում ներդրված, հաճախ սխալ կամ ոչ լիարժեք իրականացված ֆունկցիոնալության վրա։ Նրանք զուգահեռ գոյատևում էին լեզվի մեջ։

Բայց գնալով լեզվի առջև ծառացած խնդիրները շատանում էին, ֆրոնտենդում ավելի ու ավելի շատ էր օգտագործվում բիզնես լոգիկան, և տարածում էր գտնում կոնցեպտը, որ այն ինչ հնարավոր է անել ֆրոնտենդում, պետք է արվի հենց ֆրոնտենդում, բեքենդից հարցումները քչացնելու, կայքի արագագործությունն ու արդյունավետությունը բարձրացնելու համար։

2009 թվականին ընդունվեց ES5 ստանդարտը, որում մի շարք խոշոր նորամուծությունների հետ միաժամանակ ներդրվեց նաև JavaScriptԽԻՍՏ ՌԵԺԻՄԸ (Strict mode): Խիստ ռեժիմում լեզվի սեմանտիկան որոշ տարբերություններ ունի սովորականից,նախ ուղղվեցին մի շարք սխալներ, որոնք լեզվում մնացել էին ստեղծման օրվանից սկսած, և ինտերպրետատորը դրանք անտեսում էր, հաճախ պատճառ հանդիսանալով սքրիփթի «տարօրինակ», անկանխատեսելի վարքագծին։ Բացի դրանից ուղղվեցին մի շարք այլ բնույթի սխալներ, որոնք խանգարում էին ինտերպրետատորին օպտիմիզացնել կոդը, ինչի պատճառով սքրիփթը երբեմն զգալիորեն դանդաղ էր աշխատում։ Եվ նաև խիստ ռեժիմը արգելեց օգտագործել սինթաքսի որոշ էլեմենտներ, որոնք ECMAScript-ի հաջորդ տարբերակներում պետք է ստանային հատուկ նշանակություն։ Օրինակ implements, interface, let, package, private, protected, public, static և yield բառերը ռեզերվ արվեցին, որպես բանալի-բառեր, և լեզվի ավելի ուշ ստանդարտներում որոշներն արդեն մտան կիրառության մեջ։

Սքրիփթի աշխատանքը խիստ և ոչ խիստ ռեժիմում զգալի տարբերվում է իրարից։ Ֆունկցիաները կարող են լրիվ տարբեր կերպ դրսևորվել,բացառություններ «նետելը» և սխալների մշակումը կարդինալ տարբերվում են։ Սակայն որպեսզի շարունակեն ապահովել հետադարձ համապատասխանելիությունն ու նախկինում գրված սքրիփթները շարունակեն աշխատել, խիստ ռեժիմը ավտոմատ անջատված է։ Այն մենք պետք է «ստիպողաբար» միացնենք, օգտագործելով "use strict" հրահանգը։

Դրա համար սքրիփթի ամենասկզբում պետք է գրել "use strict" կամ 'use strict' հրահանգը, և ամբողջ սքրիփթը կաշխատի ժամանակակից ռեժիմում։ Նկատենք, որ եթե հրահանգը գրենք սքրիփթի կեսից, ապա այն ուղղակի կանտեսվի։ "use strict"-ից առաջ չի կարող լինել ոչ մի ուրիշ ինստրուկցիա կամ արտահայտություն։ Կարող է լինել միայն մեկնաբանություններ (տողային կամ բլոկային՝ տարբերություն չկա):

Հնարավոր է "use strict"-ը կիրառել առանձին ֆունկցիաների համար, ֆունկցիայի մարմնի առաջին տողում այն գրելով։ Սակայն միայն ֆունկցիաների։ Այլ բլոկային կառուցվածքների դեպքում (օրինակ if else կամ ցիկլեր) այն չի աշխատի։ Նշեմ նաև որ այդպես սովորաբար չի արվում և հիմնականում խիստ ռեժիմ կիրառվում է ամբողջ սքրիփթի նկատմամբ։ Գոյություն չունի որևէ եղանակ, որի միջոցով հնարավոր կլինի սքրիփթի ԿԵՍԻՑ ՉԵՂԱՐԿԵԼ ԽԻՍՏ ՌԵԺԻՄԸ։ Եթե այն գործարկեցինք, ապա ամբողջ սքրիփթը կաշխատի այդ ռեժիմով սկզբից մինչև վերջ։

Նաև նշեմ որ ES6-ում ներդրված մի շարք նորամուծություններ՝ օրինակ կլասսներն ու մոդուլները, ավտոմատ կերպով աշխատում են խիստ ռեժիմով։ Այսինքն եթե դուք կոդը գրում եք մոդուլներով և օգտագործում եք կլասսներ, այլևս կարիք չկա խիստ ռեժիմը «ստիպողաբար» ակտիվացնելու, այն արդեն իսկ ակտիվ է։

Պետք է՞ արդյոք աշխատել խիստ ռեժիմում։ Պատասխանը միանշանակ է՝ ԱՅՈ՛։ Ժամանակակից բոլոր բրաուզերները սպասարկում են այն (Չի սպասարկվում միայն Internet Explorer 10-ից հին տարբերակների կողմից, սակայն դրանցից դեռևս օգտվողների տեսակարար կշիռը մեծ չէ, և հանգիստ կարելի է անտեսել): Խիստ ռեժիմի օգտագործումը մեծացնում է թե՛ ծրագրավորողի և թե՛ ծրագրի աշխատանքի արդյունավետությունը։ Նաև ինտերպրետատորը ծրագրի մեջ հնարավորություն կստանա անել մեծ քանակությամբ օպտիմիզացիաներ, ինչի արդյունքում ձեր գրած ծրագիրը անհամեմատ արագ կսկսի աշխատել։