Sobes.tech
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) ստեղծման համար: