IIFE funksiyalar

ULASHISH

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.

Misol

(function () {
  // Code to run immediately
})();
O‘zingiz sinab ko‘ring »
IIFE funksiyasi bir vaqtning o‘zida aniqlanadi va bajariladi.

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

Misol

(function () {
  let text = "Hello! I called myself.";
})();
O‘zingiz sinab ko‘ring »

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.

Function expressions will execute automatically if the expression is followed by ().

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.

Misol

(function (name) {
  let text = "Hello " + name;
})("John Doe");
O‘zingiz sinab ko‘ring »

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.

Misol

(() => {
  let text = "Hello! I called myself.";
})();
O‘zingiz sinab ko‘ring »

Parametrli IIFE Arrow funksiyasi

Misol

((name) => {
  let text = "Hello " + name;
})("John Doe");
O‘zingiz sinab ko‘ring »

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

Viktorina

Nima uchun IIFElar JavaScript modullari mavjud bo‘lgunga qadar keng tarqalgan edi?


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!