Junior
Ինչ եք գիտակցում ֆունկցիայի արտահայտության (function expression) և ֆունկցիայի հայտարարության (function declaration) միջև տարբերությունների մասին։
sobes.tech AI
Պատասխան AI-ից
Ֆունկցիայի արտահայտությունը կարող է լինել անվանված կամ անանուն: Ֆունկցիայի հայտարարությունը միշտ ունի անուն:
Հիմնական տարբերությունը hoisting մեխանիզմն է:
- Ֆունկցիայի հայտարարություն: Այն ամբողջությամբ բարձրանում է, ներառյալ մարմինը: Ֆունկցիան հասանելի է կանչելու համար կոդում նրա իրական հայտարարությունից առաջ:
// Ֆունկցիայի հայտարարություն
console.log(declarationFunc()); // Աշխատում է, ֆունկցիան բարձրացվել է
function declarationFunc() {
return "Ես հայտարարություն եմ";
}
// Ֆունկցիայի արտահայտություն
// console.log(expressionFunc()); // Կառուցում է TypeError կամ ReferenceError (կախված var/let/const)
const expressionFunc = function() {
return "Ես արտահայտություն եմ";
};
console.log(expressionFunc()); // Աշխատում է սահմանումից հետո
Ֆունկցիայի հայտարարությունները նախընտրելի են սովորական օգտագործման համար, քանի որ դրանց կարգը կոդում չի ազդում նրանց կանչելու հնարավորության վրա: Ֆունկցիայի արտահայտությունները հաճախ օգտագործվում են՝
- Անունազուրկ ֆունկցիաներ ստեղծելու համար (օրինակ՝ որպես արգումենտներ կամ անմիջապես կանչվող ֆունկցիա արտահայտություններ - IIFE):
- Կոնդիցիոն ֆունկցիաների սահմանման համար:
- Կապերի (closures) ստեղծման համար: