Series: JavaScript Basics Lesson 5

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

  1. var o'rniga let va const ishlating — TDZ xatolarni oldini oladi
  2. Function declaration'ni yuqorida e'lon qiling — kod o'qish osonlashadi
  3. Function expression'ni chaqirishdan oldin e'lon qiling — xatolardan qoching

📝 Xulosa

  • Hoisting — Execution Context'ning creation phase jarayoni
  • var hoisting qilinadi va undefined qiymatga ega bo'ladi
  • let va const hoisting qilinadi, lekin TDZ'da bo'ladi
  • Function declaration to'liq hoisting qilinadi
  • Function expression faqat var qismi hoisting qilinadi