IIFE funksiyalar
Darhol chaqiriladigan funksiya ifodalari
IIFE darhol chaqiriladigan funksiya ifodasining qisqartmasi.
IIFE - bu aniqlanganda o‘zini chaqiradigan funksiya.
IIFE nima?
Odatda, Function faqat chaqirilganda ishlaydi.
IIFE JavaScript dvigateli uni o‘qiganda (kompilyatsiya qilganda) avtomatik ravishda ishga tushadi.
IIFE qachon ishlatiladi?
- Xususiy ko‘rinish sohasini yaratish uchun
- Sozlash kodini bir marta ishga tushirish uchun
- Eski JavaScript kodlarida
Global ko‘rinish sohasini ifloslantirmaslik
IIFE ichidagi hamma narsa ushbu funksiya uchun shaxsiydir.
IIFE ichidagi o‘zgaruvchilarga tashqaridan murojaat qilib bo‘lmaydi.
Misollar
(function () {
let x = 10;
})();
// x is not accessible here
(function () {
let hidden = 42;
})();
let result = hidden; // ⛔ Error: hidden is not defined
Oddiy IIFE
Yuqoridagi funksiya anonim o‘z-o‘zini chaqiruvchi funksiya (nomsiz Function) deb ham ataladi.
IIFE qanday ishlaydi
Funksiya ifodalarini o‘z-o‘zini chaqiradigan qilish mumkin.
O‘z-o‘zini chaqiradigan funksiya ifodasi chaqirilmasdan avtomatik ravishda ishga tushadi (chaqiriladi).
funksiyasi
function () {
// Code to run
};
Funksiya atrofidagi qavslar JavaScript-ga funksiyani ifoda sifatida ko‘rishni bildiradi.
Ifoda
(function () {
// Code to run
});
Funksiyani Ifoda ga aylantirish uchun qavslar ichiga o‘ralgan.
Yakuniy sintaksis
(function () {
// Code to run
})();
Oxiridagi () funksiyani darhol bajaradi.
Faqat funksiya ifodasinigina o‘z-o‘zidan chaqirish mumkin.
Funksiya deklaratsiyasini o‘zingiz chaqira olmaysiz.
Parametrli IIFE
Argumentlarni IIFE ga o‘tkazishingiz mumkin.
Qiymat qaytaradigan IIFE
IIFE o‘zgaruvchida saqlanishi mumkin bo‘lgan qiymatni qaytarishi mumkin.
Misol
let result = (function () {
return 5 + 5;
})();
Strelkali funksiyali IIFE
Arrow funksiyalardan ham IIFE sifatida foydalanish mumkin.
Parametrli IIFE Arrow funksiyasi
Zamonaviy JavaScript’da IIFE
Bugungi kunda JavaScript modullari ko‘pincha IIFE-larga bo‘lgan ehtiyojni almashtiradi. Modullar sukut bo‘yicha o‘z qamroviga ega.
Misol
<script type="module">
let x = 10;
</script>
X o‘zgaruvchisi global emas, modulga kiritilgan.
Nomlangan funksiya ifodasi bilan IIFE
Siz IIFE ga nom berishingiz mumkin:
Misol
(function greet() {
let text = "Hello! I called myself.";
})();
greet(); // ⛔ ReferenceError
Biroq, salomlashish nomi tashqi/global miqyosda emas, balki faqat funksiyaning o‘zida mavjud.
Nega nomlangan IIFE’dan foydalanish kerak?
O‘z-o‘zini rekursiv chaqiradigan funksiyalar uchun (o‘zini qayta-qayta chaqirish):
Misol
(function factorial(n) {
if (n <= 1) return 1;
return n * factorial(n - 1); // recursive call
})(5);
Modul sifatida IIFE (xususiy o‘zgaruvchilar)
Misol
const counter = (function () {
let value = 0;
return {
increment() { value++; },
get() { return value; }
};
})();
counter.increment();
let x = counter.get();
O‘zingiz sinab ko‘ring »
O‘z-o‘zini chaqiradigan funksiyalar ECMAScript 6’gacha keng qo‘llanilgan
Bugungi kunda JavaScript let, const va modullari ularga bo‘lgan ehtiyojni kamaytirdi.
Ammo ular hali ham foydali bo‘lishi mumkin:
- Darhol bajarilishi kerak bo‘lgan sozlash kodini ishga tushirish
- Xususiy o‘zgaruvchilar va xususiy ko‘rinish sohasini yaratish
- Avoiding global scope pollution
- Ularga tayanadigan eski JavaScript kodi bilan ishlash
IIFE qachon ishlatilmasligi kerak
- Zamonaviy JavaScript modullaridan foydalanganda
- Soddaroq kod yetarli bo‘lganda
Umumiy xatolar
Yakuniy qavslarni unutish
Without (), the function will not run.IIFE’ni oddiy funksiyalar bilan adashtirish
IIFEs cannot be called again.IIFE’lardan ortiqcha foydalanish
Modern JavaScript often does not need them.
W3Schools Pathfinder
Yutuqlaringizni kuzating – bu bepul!
