Ֆունկցիաներ (Functions)
"Ֆունկցիաները ծրագրի հիմնական կառուցողական բլոկներն են:"
Function Declaration (Ֆունկցիայի հայտարարում)
Սա հանդիսանում է HoistableDeclaration: JS շարժիչը Environment Record-ը ստեղծելիս այս ֆունկցիաները միանգամից սկզբնավորում է (initialize):
Սինտաքս
Առավելությունը
Կարելի է կանչել կոդի ցանկացած հատվածից (նույնիսկ հայտարարումից առաջ), ինչը թույլ է տալիս կառուցել կոդը «կարևորից դեպի մանրուքներ» սկզբունքով:
Function Expression (Ֆունկցիոնալ արտահայտություն)
Այստեղ ֆունկցիան հանդես է գալիս որպես արժեք: Այն
գրանցվում է որպես լեքսիկական փոփոխական և ենթարկվում է
let/const կանոններին:
Սինտաքս
Տարբերությունը
Քանի դեռ ծրագրի կատարումը չի հասել այս տողին, ֆունկցիան գտնվում է Temporal Dead Zone-ում և հասանելի չէ:
Arrow Functions (Սլաքային ֆունկցիաներ)
ES6-ի ամենակարևոր լրացումներից մեկը: Սրանք պարզապես «կարճ գրելաձև» չեն, այլ ունեն էական ֆունկցիոնալ տարբերություններ:
Սինտաքս
Ինչու՞ են հատուկ
-
Lexical this: Չունեն սեփական
this: Վերցնում են այն ստեղծման միջավայրից: -
Constructor: Չեն կարող օգտագործվել
newօպերատորի հետ: -
Arguments: Չունեն սեփական
argumentsօբյեկտը:
IIFE (Անմիջապես կանչվող ֆունկցիաներ)
Չնայած ժամանակակից JS-ում ունենք Block Scope, IIFE-ն դեռևս օգտագործվում է որոշակի դեպքերում:
Սինտաքս
Նպատակը
Կանխել գլոբալ տիրույթի (Global Scope) աղտոտումը և ստեղծել մեկուսացված միջավայր:
Use Cases (Ե՞րբ և ո՞րն օգտագործել)
- Function Declaration: Հիմնական գործողությունների համար, որոնք պետք է հասանելի լինեն ամբողջ ֆայլում:
-
Arrow Functions: Callback-ների (
map,filter) և այնտեղ, որտեղ պետք է պահպանելthis-ը: -
Function Expression: Երբ ֆունկցիան պետք է
սահմանվի պայմանականորեն (օրինակ՝
if-ի ներսում):