Ֆունկցիաներ (Functions)

"Ֆունկցիաները ծրագրի հիմնական կառուցողական բլոկներն են:"

Սա հանդիսանում է HoistableDeclaration: JS շարժիչը Environment Record-ը ստեղծելիս այս ֆունկցիաները միանգամից սկզբնավորում է (initialize):

Սինտաքս

Առավելությունը

Կարելի է կանչել կոդի ցանկացած հատվածից (նույնիսկ հայտարարումից առաջ), ինչը թույլ է տալիս կառուցել կոդը «կարևորից դեպի մանրուքներ» սկզբունքով:

Այստեղ ֆունկցիան հանդես է գալիս որպես արժեք: Այն գրանցվում է որպես լեքսիկական փոփոխական և ենթարկվում է let/const կանոններին:

Սինտաքս

Տարբերությունը

Քանի դեռ ծրագրի կատարումը չի հասել այս տողին, ֆունկցիան գտնվում է Temporal Dead Zone-ում և հասանելի չէ:

graph LR Code["Code Start"] --> FD["Function Declaration"] FD -->|"Hoisted"| Call1["Can be called here"] Code --> FE["Function Expression"] FE -->|"Not Hoisted"| Call2["Can only be called after declaration"] style FD fill:#10b981,stroke:#10b981,color:#fff style FE fill:#ef4444,stroke:#ef4444,color:#fff style Code fill:none,stroke:#fff

ES6-ի ամենակարևոր լրացումներից մեկը: Սրանք պարզապես «կարճ գրելաձև» չեն, այլ ունեն էական ֆունկցիոնալ տարբերություններ:

Սինտաքս

Ինչու՞ են հատուկ

  • Lexical this: Չունեն սեփական this: Վերցնում են այն ստեղծման միջավայրից:
  • Constructor: Չեն կարող օգտագործվել new օպերատորի հետ:
  • Arguments: Չունեն սեփական arguments օբյեկտը:

Չնայած ժամանակակից JS-ում ունենք Block Scope, IIFE-ն դեռևս օգտագործվում է որոշակի դեպքերում:

Սինտաքս

Նպատակը

Կանխել գլոբալ տիրույթի (Global Scope) աղտոտումը և ստեղծել մեկուսացված միջավայր:

Use Cases (Ե՞րբ և ո՞րն օգտագործել)

  1. Function Declaration: Հիմնական գործողությունների համար, որոնք պետք է հասանելի լինեն ամբողջ ֆայլում:
  2. Arrow Functions: Callback-ների (map, filter) և այնտեղ, որտեղ պետք է պահպանել this-ը:
  3. Function Expression: Երբ ֆունկցիան պետք է սահմանվի պայմանականորեն (օրինակ՝ if-ի ներսում):