JavaScript Qanday Ishlaydi?
JavaScript engine qanday ishlashini o'rganing: Memory Heap, Call Stack, funksiya chaqiruvlari va execution context.
1-dars
🧠 "JavaScript qanday ishlaydi?"
1️⃣ JavaScript oddiy tarjimon emas
JS bu:
- Interpreted language (lekin zamonaviy engine JIT ishlatadi)
- Single-threaded
- Event-driven
Lekin bularni hali chuqur ochmaymiz. Bugungi fokus — Engine.
2️⃣ JS qayerda ishlaydi?
JS o'zi mustaqil ishlamaydi.
U ishlashi uchun kerak:
🧠 Engine
Mashhur engine:
- 🟢 V8 — Chrome va Node.js ichida
- 🟡 SpiderMonkey — Firefox ichida
- 🔵 JavaScriptCore — Safari ichida
Engine vazifasi:
👉 Sening yozgan JS kodingni
👉 Mashina tushunadigan kodga aylantirish
👉 Uni bajarish
3️⃣ Engine ichida nima bor?
Oddiylashtirib aytsak, 2 ta asosiy qism bor:
📦 1. Memory Heap
Bu yerda:
- objectlar
- arraylar
- functionlar
saqlanadi.
📚 2. Call Stack
Bu yerda:
- qaysi funksiya ishlayapti
- qaysi qatorda ishlayapti
nazorat qilinadi.
4️⃣ Oddiy misol
function sayHi() {
console.log("Hi");
}
sayHi();
Ichkarida nima bo'ladi?
- Engine kodni o'qiydi
sayHifunksiyasini heap'da saqlaydisayHi()chaqirilganda stack'ga qo'yadiconsole.logishlaydi- Stack'dan chiqariladi
Stack = oxirgi kirgan birinchi chiqadi (LIFO).
5️⃣ Muhim haqiqat
JS:
- Multi-thread emas
- Bir vaqtning o'zida bitta ish bajaradi
- Stack to'lsa — xato beradi (Maximum call stack exceeded)
🧠 Agar funksiya ichida yana funksiya chaqirilsa — Stack'da nima bo'ladi?
Misol:
function one() {
two();
}
function two() {
console.log("Hello");
}
one();
🔍 Step-by-step ichkarida nima bo'ladi?
1️⃣ Dastur boshlanadi
👉 Global Execution Context stack'ga qo'yiladi.
Stack:
| Global |
2️⃣ one() chaqiriladi
Engine one() ni stack'ga qo'yadi.
Stack:
| one() |
| Global |
3️⃣ one() ichida two() chaqiriladi
Engine two() ni stack'ga qo'yadi.
Stack:
| two() |
| one() |
| Global |
⚠️ E'tibor ber:
Har yangi funksiya chaqirilganda, u stack'ning ustiga qo'yiladi.
4️⃣ two() tugaydi
console.log bajariladi.
two() stack'dan chiqariladi.
Stack:
| one() |
| Global |
5️⃣ one() tugaydi
one() ham chiqariladi.
Stack:
| Global |
6️⃣ Dastur tugaydi
Global ham tozalanadi.
Stack bo'sh.