Hoisting
JavaScript'da Hoisting tushunchasini o'rganing: Execution Context'ning creation phase, var, let, const va function declaration hoisting.
5-dars
🧠 Hoisting
Ko'pchilik noto'g'ri tushunadi.
Hoisting degani:
O'zgaruvchi yoki funksiya yuqoriga ko'tariladi
Lekin bu to'liq to'g'ri emas.
Aslida:
Execution Context'ning creation phase jarayoni.
1️⃣ Oddiy misol
console.log(a);
var a = 10;
Natija:
undefined
Nega?
Engine ichida aslida shunaqa bo'ladi:
Creation phase:
a = undefined
Execution phase:
console.log(a);
a = 10;
Shuning uchun xato bermaydi.
2️⃣ Function declaration hoisting
sayHi();
function sayHi() {
console.log("Hi");
}
Natija:
Hi
Function declaration to'liq hoisting qilinadi.
Creation phase'da:
sayHi → function body bilan birga
3️⃣ Function expression hoisting qilinadimi?
sayHi();
var sayHi = function() {
console.log("Hi");
};
Natija:
❌ TypeError
Creation phase'da:
sayHi = undefined
Execution phase'da:
sayHi(); // undefined() chaqirilmoqda
4️⃣ let / const bilan hoisting
console.log(a);
let a = 10;
Natija:
❌ ReferenceError
Chunki:
Creation phase'da:
a → uninitialized (TDZ)
U mavjud, lekin ishlatish mumkin emas.
🎯 Hoisting — bu nima?
Hoisting — bu:
Execution context yaratilayotganda variable va function'lar oldindan xotiraga yozilishi.
📊 Xulosa
| Tur | Hoisting | Qiymat |
|---|---|---|
var |
Ha | undefined |
let |
Ha | TDZ |
const |
Ha | TDZ |
function declaration |
Ha | to'liq body |
function expression |
Yo'q (faqat var qismi) | undefined |
🔍 TDZ (Temporal Dead Zone) nima?
TDZ — bu:
let va const uchun:
- Creation phase'da o'zgaruvchi yaratiladi
- Lekin uninitialized holatda
- Qiymat berilgunga qadar ishlatib bo'lmaydi
Misol:
console.log(a); // ❌ ReferenceError: Cannot access 'a' before initialization
let a = 10;
Bu yerda a TDZ'da.
💡 Amaliy maslahatlar
varo'rnigaletvaconstishlating — TDZ xatolarni oldini oladi- Function declaration'ni yuqorida e'lon qiling — kod o'qish osonlashadi
- Function expression'ni chaqirishdan oldin e'lon qiling — xatolardan qoching
📝 Xulosa
- Hoisting — Execution Context'ning creation phase jarayoni
varhoisting qilinadi vaundefinedqiymatga ega bo'ladiletvaconsthoisting qilinadi, lekin TDZ'da bo'ladi- Function declaration to'liq hoisting qilinadi
- Function expression faqat
varqismi hoisting qilinadi