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
varistifadə olunursa). Funksiya özü yalnız interpretator onun təyinat xəttinə çatdıqdan sonra mövcuddur.letvəconstilə 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.