JavaScriptda "Hoisting"
Josh*Assalaamu alaykum!
Bugun gaplashadigan mavzuyimiz JavaScriptda Hoisting tushunchasi haqida bo'ladi.
Bismillah.
Demak Hoisting (o'zbekchada "ko'tarish"). Uni oddiy va murakkab holatlari bilan tanishtirishga harakat qilaman. Maqola oxirida ingliz tilida interview topshirmoqchi bo'lganlar uchun biroz inglizchada tushuntiraman.

JavaScriptda o'zgaruvchilar(var, let, const), funksiyalar, classlar...ni biz e'lon qilmasimizdan oldin ishlatishimiz mumkin. Misol uchun,
num = 10; // num = 10
var num;
yoki funksiyaga misol.
sayWhat();
function sayWhat(){
alert("what ?");
};
Quyidagi misolning birinchisida var orqali e'lon qilingan o'zgaruvchini kodning tepasida ishlatdik. Ya'ni e'lon qilishimizdan oldin. Bu holatda var ning boshlang'ich qiymati JS tomonidan "undefined" etib belgilandi va 10 qiymatiga biz o'zgartirdik. Mana shu hoisting. Ikkinchi misolimiz ham xuddi shunday ishlamoqda. Ya'ni function ni e'lon qilishdan avval ishlatmoqdamiz, va keyin e'lon qilyapmiz.
Shu aynan oddiy hoisting ga misol bo'ladi.
Keling biroz chuqurlashamiz.
Bu yerda nima hodisa ketyapti ?
JavaScript biz e'lon qilgan o'zgaruvchi va funksiyalarni kodning tepasiga ko'taryapti.
Hoisting dan dasturlashda aynan qaysi vaziyatlarda foydalanamiz ?
Ko'pincha butun kodimizda ishlatadigan funksiyalar bo'lsa qulaylik uchun ularni kodning eng pastiga yozib qo'yamiz va kodning xoxlagan yerida ishlatib ketaveramiz.
Javob Ha let va const ham tepaga ko'tariladi. Ammo biz bu ikkisini e'lon qilishdan oldin ishlata olmaymiz va var kabi qiymati "undefined" etib belgilanmaydi. Ular TDZ(temporal Dead Zone.)'da turishadi e'lon qilinishgacha bo'lgan vaqt oraliqida.
Agar biz let va const ni e'lon qilsak va kodning teparoqida ishlatmoqchi bo'lsak tahminan quyidagicha xato qaytadi:

Bu haqida yanayam chuqurlashmoqchi bo'lganlar uchun link qoldirdim.
Demak , Hoisting nima deyilganda javobimiz - "JavaScript var, function, class larni e'lon qilsak, ularni avtomatik ravishda kodning tepasiga ko'tarishi" deb javob bersak bo'ladi.
Aslida bu juda katta mavzu , ammo men aynan eng kamida tushunishimiz va intervyularda aytishimiz kerak bo'lgan tushunchalarni aytib o'tdim. Yanayam to'liq ma'lumot ushu linkda.
Keling darsimizga kerakli ingliz tili so'zlari bilan tanishamiz:
declaration - e'lon qilish. Bu so'zga misol: var a;
initialization - ilk qiymatni berish. bunga misol: var a; // a = undefined
assignment - yangi qiymat berish: a = 10
Inglizchada hoistingni quyidagicha tushuntirsak bo'ladi:
Hoisting is JavaScript's default behavior that moves declarations to the top of the code. So that , we can use any var or function before we declare them.
var is initialized as undefined when it is hoisted. let and const are also hoisted, but we can not use them before initialization.
Sizga manfaatli bo'lgan bo'lsa hursandman.
Yanada ko'proq maqolalar uchun kanalim: @JoshDeveloper