Kopchilikni qiynaydigan savolga javob topamiz!!!

Genz
Iqboljon Yuldashev
23 Avgust 2023391 kun oldin
Bizning ijtimoiy tarmoqlar

 

var variable ga block scope ta'sir qilmaydi. Shu sababli ko'rinmasada for loopni ichida var bilan ochilgan variable global variable bo'ladi. For loop har safar iteratsiya bo'lganda var variable ga qiymatni saqlab, keyin yana iteratsiya bo'ladi to for loopni ichidagi var i 3 marta qayta  3 ga teng bo'lmaguncha.  Buning sababi scope chain va event loop sababli. Var variable global scope da turgani uchun har safar iteratsiya bo'lganda var qabul qilgan avvalgi qiymatlar override bo'lib, yangi qiymatni var i o'zlashtirib oladi va bu jarayon var i 3 ga teng bo'lmaguncha takrorlanadi. var i 3 ga teng bo'lgandan keyin esa foor loop iteratsiyani to'xtatadi va keyin setTimeoutni ichidagi console.log ishlaydi. Console.log 3 marotaba 3 ni chiqaradi. Bu event loop hodisasi tufayli sodir bo'ladi.

 

 

let variable ga block scope ta'sir qiladi. Shu sababli  for loopni ichida let bilan ochilgan variable block scoped variable bo'ladi. Bu variable (let i) block scope dan tashqarida ishlamaydi. For loop har safar iteratsiya bo'lganda let variable ga qiymatni saqlab, keyin yana iteratsiya bo'ladi to for loopni ichidagi var i 3 marta qayta  3 ga teng bo'lmaguncha. Bunda let i foor loopni ichidagi block scope variable bo'lgani uchun let i har safar qaytadan yaratiladi 3 marotaba va har safar yangi yaratilgan let i variable lari har safar boshqa boshqa qiymat qabul qiladi. Sababi let i block scope variable. Birinchi iteratsiyadi let i 0 ga teng, ikkichi iteratsiyadi 1 ga teng va bu holat let i 3 dan kichik eng oxirgi son (2) ga teng bo'lmaguncha davom etadi. For loop iteratsiyasi butunlay to'xtagandan so'ng setTimeout ishlaydi va consol.log da har bir let i o'zgaruvchisi o'ziga tegishli qiymat bilan chiqadi. Birinchi let i 0 ga teng, ikkichisi 1 ga teng va uchunchi let i 2 ga teng bo'ladi.

#sifatli ta'lim
#ustozlar
#dasturchilar