Sobes.tech
Junior

Funksiya ifadəsi (function expression) və funksiya bəyanatı (function declaration) arasındakı fərqlər haqqında nə bilirsiniz?

sobes.tech Süni İntellekt

AI-dan cavab

Funksiya ifadəsi adlandırıla və ya anonim ola bilər. Funksiya bəyanatı həmişə adlandırılmışdır.

Əsas fərq hoisting mexanizmindədir:

  • Funksiya bəyanatı: Tamamilə yuxarı çəkilir, daxil olmaqla bədən. Funksiya kodda onun faktiki bəyanatından əvvəl çağırıla bilər.
  • Funksiya ifadəsi: Yalnız ona təyin olunan dəyişən yuxarı çəkilir (əgər var istifadə olunursa). Funksiya özü yalnız interpretator onun təyinat xəttinə çatdıqdan sonra mövcuddur. letconst ilə dəyişənlər üçün yuxarı çəkilmə yoxdur.
// Funksiya bəyanatı
console.log(declarationFunc()); // İşləyir, funksiya yuxarı çəkilib

function declarationFunc() {
  return "Mən bəyanatam";
}

// Funksiya ifadəsi
// console.log(expressionFunc()); // TypeError və ya ReferenceError verəcək (var/let/const-ə bağlıdır)

const expressionFunc = function() {
  return "Mən ifadəyəm";
};

console.log(expressionFunc()); // Təyin etdikdən sonra işləyir

Funksiya bəyanatları ümumi istifadə üçün üstün tutulur, çünki onların koddakı sırası çağırma imkanına təsir etmir. Funksiya ifadələri tez-tez istifadə olunur:

  • Adı olmayan funksiyalar yaratmaq üçün (məsələn, arqument kimi və ya dərhal çağırılan funksiya ifadələri - IIFE).
  • Şərti funksiyaların təyin edilməsi.
  • Bağlamalar (closures) yaratmaq üçün.