Junior
Funksiya ifodasi (function expression) va funksiya e'lon qilish (function declaration) o'rtasidagi farqlar haqida nima bilasiz?
sobes.tech AI
AIdan javob
Funktsiya ifodasi nomli yoki nomlanmagan bo'lishi mumkin. Funktsiya e'lon qilish har doim nomga ega.
Asosiy farq - hoisting mexanizmi:
- Funktsiya e'lon qilish: To'liq ko'tariladi, jumladan tanasi. Funktsiya kodda haqiqiy e'lon qilinishidan oldin chaqirilishi mumkin.
- Funktsiya ifodasi: Faqat unga tayinlangan o'zgaruvchi ko'tariladi (agar
varishlatilsa). Funktsiya o'zi faqat uning ta'rifi qatoriga yetib borgach mavjud bo'ladi.letvaconstbilan o'zgaruvchilar uchun hoisting yo'q.
// Funktsiya e'lon qilish
console.log(declarationFunc()); // Ishlaydi, funktsiya ko'tarilgan
function declarationFunc() {
return "Men e'loniman";
}
// Funktsiya ifodasi
// console.log(expressionFunc()); // TypeError yoki ReferenceError chiqaradi (var/let/const ga bog'liq)
const expressionFunc = function() {
return "Men ifodaman";
};
console.log(expressionFunc()); // Ta'rifdan keyin ishlaydi
Funktsiya e'lonlari oddiy foydalanish uchun afzalroq, chunki ularning koddagi tartibi chaqirish imkoniyatiga ta'sir qilmaydi. Funktsiya ifodalari ko'pincha quyidagilar uchun ishlatiladi:
- Nomlanmagan funktsiyalar yaratish (masalan, argument sifatida yoki darhol chaqiriladigan funktsiya ifodalari - IIFE).
- Funktsiyalarni shartli ravishda aniqlash.
- Yopilishlar (closures) yaratish.