JavaScript debugging vositalari: console metodlari (table, time, warn), debugger kalit so'zi va breakpointlar, Call Stack va Stack Trace tahlili, tizimli xato tuzatish va yakuniy tavsiyalar.
Bu — kitobning yakuniy bobi. Bu bobda xatolarni topish va tuzatish (debugging) vositalarini, hamda butun kitob davomida o'rgangan bilimlarni birlashtiruvchi yaxshi amaliyotlarni ko'rib chiqamiz.
Kitob davomida asosan console.log()ni ishlatdik, lekin console obyektining boshqa, ancha kuchli metodlari ham bor.
| Metod | Vazifasi |
|---|---|
console.log() | Oddiy ma'lumot chiqarish |
console.error() | Xatolik sifatida (odatda qizil rangda) chiqarish |
console.warn() | Ogohlantirish sifatida (sariq rangda) chiqarish |
console.table() | Ma'lumotni jadval ko'rinishida chiqarish |
console.group() / console.groupEnd() | Chiqishlarni guruhlash |
console.time() / console.timeEnd() | Kod bajarilish vaqtini o'lchash |
script.jsJavaScriptlet users = [{ name: "Ali", age: 25 },{ name: "Vali", age: 30 }];console.table(users);// Chiroyli jadval ko'rinishida chiqadi
script.jsJavaScriptconsole.time("hisoblash");let sum = 0;for (let i = 0; i < 1000000; i++) {sum += i;}console.timeEnd("hisoblash"); // "hisoblash: 5.23ms"
🔗 Connection
console.time() — Chapter 20'da o'rgangan Date.now() orqali qo'lda vaqt o'lchashning tayyor, qulayroq alternativi.
Breakpoint — kodni ma'lum bir qatorda "to'xtatib", o'sha paytdagi barcha variable'lar qiymatini tekshirish imkonini beruvchi debugging vositasi.
script.jsJavaScriptfunction calculateTotal(items) {let total = 0;for (let item of items) {debugger; // kod shu yerda to'xtaydi (agar DevTools ochiq bo'lsa)total += item.price;}return total;}
Agar brauzerning Developer Tools (F12) ochiq bo'lsa, debugger qatoriga yetib kelganda, kod avtomatik "pauza" qiladi, va dasturchi o'sha paytdagi barcha variable'larni (total, item) tekshirishi mumkin.
💡 Key Idea
console.log() bilan "taxmin qilib" tekshirish o'rniga, breakpoint — kodning aynan qaysi qatorida, qanday holatda ekanini aniq ko'rish imkonini beradi — bu murakkab xatolarni topishda ancha samarali.
Xatolik yuz berganda, JavaScript odatda Stack Trace — xatolik qayerdan boshlanganini ko'rsatuvchi qatorlar ro'yxatini beradi. Buni to'g'ri o'qishni bilish — debugging'ning eng muhim ko'nikmalaridan biri.
script.jsJavaScriptfunction processOrder(order) {return calculateTotal(order.items);}function calculateTotal(items) {return items.reduce((sum, item) => sum + item.price, 0);}processOrder({ items: null });
Xato xabari (taxminan):
code.textTEXTTypeError: Cannot read properties of null (reading 'reduce')at calculateTotal (file.js:6:17)at processOrder (file.js:2:12)at file.js:9:1
null ustida .reduce() ishlatishga urinilgan.at calculateTotal (file.js:6:17) — xatolik aynan qaysi function va qatorda yuz bergani (Chapter 29'dagi Call Stack'ning "eng tepasi").🔗 Connection
Bu — Chapter 29'da o'rgangan Call Stack tushunchasining, real xato xabarlarida qanday "ko'rinishi"ga aniq misol: Stack Trace — aslida, xatolik yuz bergan paytdagi Call Stack'ning "suratga olingan" holati.
🔥 Important
Xato xabarini ko'rganda, birinchi navbatda eng tepadagi qatorga (xatolik aynan qayerda yuz bergani) e'tibor bering — bu, muammoning aniq manbasini eng tez topish yo'li.
| Qadam | Nima qilish kerak |
|---|---|
| 1. O'qish | Xato xabarini diqqat bilan, so'zma-so'z o'qish |
| 2. Joylashtirish | Stack Trace orqali, xatolik aynan qaysi qatorda ekanini topish |
| 3. Tekshirish | O'sha qatordagi barcha variable'larning qiymatlarini console.log/breakpoint bilan tekshirish |
| 4. Taxmin qilish | "Nima kutilgan edi, nima haqiqatda bo'ldi?" savolini berish |
| 5. Kichraytirish | Muammoni eng kichik, qayta tiklanadigan misolga keltirish |
Aytaylik, quyidagi xato yuz berdi: "Cannot read properties of undefined (reading 'map')".
script.jsJavaScriptfunction displayUsers(response) {return response.data.map(user => user.name); // xatolik shu yerda}
Debugging jarayoni:
undefinedda .map() chaqirilyapti, ya'ni response.data — undefined.script.jsJavaScriptfunction displayUsers(response) {if (!response?.data) {console.error("Ma'lumot topilmadi:", response);return [];}return response.data.map(user => user.name);}
Bu — Chapter 18 (Error Handling) va Chapter 39 (Optional Chaining)dagi bilimlarni birlashtirib, kelajakda shunga o'xshash xatolarning oldini olish.
| Tamoyil | Qaysi bobda o'rgandik |
|---|---|
const/let ishlatish, var emas | Chapter 1, 11 |
=== ishlatish, == emas | Chapter 3 |
| Function'larni kichik va "bir vazifali" qilish | Chapter 6, 45 |
Xatolarni try/catch bilan boshqarish | Chapter 18 |
Asinxron kod uchun async/await afzal ko'rish | Chapter 28 |
| Xotira "sizib chiqishi"ning oldini olish | Chapter 43 |
| Kodni testlar bilan tekshirish | Chapter 50 |
🎯 Yakuniy fikr
JavaScript'ni chuqur bilish — bu nafaqat sintaksisni yodlash, balki nima uchun narsalar shunday ishlashini tushunish (Scope, Closure, Event Loop, Prototype kabi "sahna orqasidagi" mexanizmlar). Ushbu handbook orqali siz "zero"dan "hero"gacha bo'lgan yo'lni bosib o'tdingiz — endi bu bilimlarni amaliyotda, real loyihalarda mustahkamlash vaqti keldi.
Task:
console.table() yordamida, 3 ta mahsulotdan iborat array'ni (har birida name va price) jadval ko'rinishida chiqaring.
Required Concepts:
console.table()Task:
Ataylab xato beradigan function yozing (masalan, undefinedning propertysiga murojaat qiladigan), uni ishga tushirib, natijada chiqqan Stack Trace'ni tahlil qiling — xatolik turi, qatori va chaqiruvlar zanjirini aniqlang.
Required Concepts:
Task:
Kitobda o'rgangan kamida 5 ta turli tushunchani (masalan, Closure, Async/Await, Error Handling, Array Methods, Class) birlashtirgan, kichik amaliy dastur yozing — masalan, "Vazifalar ro'yxati" (To-Do List) tizimi: TodoList class'i, localStorageda saqlash (Chapter 36), xatolarni boshqarish, va kamida bitta test (Chapter 50) bilan.
Required Concepts:
script.jsJavaScriptfunction level3() {throw new Error("Xatolik level3'da");}function level2() {level3();}function level1() {level2();}level1();
Stack Trace'da qaysi function eng tepada ko'rsatiladi?
🧠 Think first! Javobni ko'rishdan oldin kamida 30 soniya o'ylang.
<details> <summary>Answer</summary> level3 — eng tepada ko'rsatiladi.Why?
Chapter 29.2 (Call Stack) va Chapter 51.3 (Stack Trace)da o'rgandik: Stack Trace — xatolik aynan qayerda yuz berganidan boshlab, uni chaqirgan function'larga qarab pastga qarab davom etadi. throw — level3 ichida yuz bergani uchun, u ro'yxatning eng yuqorisida turadi, undan keyin level2, keyin level1 keladi.
Quyidagi kodda bir nechta muammo bor:
script.jsJavaScriptfunction getActiveUsers(users) {let result = []for (var i = 0; i <= users.length; i++) {if (users[i].active == true) {result.push(users[i])}}return result}let users = [{ name: "Ali", active: true },{ name: "Vali", active: false }];console.log(getActiveUsers(users));
Your Task:
Ushbu kodda kamida 3 ta muammoni toping (kitobning turli boblariga tayanib) va ularning barchasini tuzating.
To'liq tuzatilgan versiya:
</details>script.jsJavaScriptfunction getActiveUsers(users) {return users.filter(user => user.active === true);}let users = [{ name: "Ali", active: true },{ name: "Vali", active: false }];console.log(getActiveUsers(users)); // [{ name: "Ali", active: true }]
console obyekti — log()dan tashqari, table(), time(), group() kabi kuchli metodlarga ega.debugger kalit so'zi va breakpoint'lar — kodni "to'xtatib", holatni aniq tekshirish imkonini beradi.console.log()dan tashqari, console.table() va debugger kabi vositalar debugging'ni ancha tezlashtiradi.script.jsJavaScriptconsole.log(value);console.error("xatolik");console.warn("ogohlantirish");console.table(arrayOfObjects);console.time("label");console.timeEnd("label");debugger; // kodni to'xtatish nuqtasi
🎉 Handbook yakunlandi!
Siz JavaScript'ni Zero dan Hero gacha — 51 ta bob, Variables'dan tortib Debugging Best Practices'gacha — to'liq bosib o'tdingiz. Endi bu bilimlarni mustahkamlashning eng yaxshi yo'li — amaliyot: kichik loyihalar qiling, kodni qayta yozing, xatolarga duch keling va ularni kitobda o'rgangan bilimlar bilan hal qiling.
Omad tilaymiz! 🚀
Mavzu bo‘yicha tushunchalaringizni interaktiv test orqali sinovdan o‘tkazing va natijalarni bilib oling.
Darslikda o‘rganilgan qoidalarga asosan real kod yozing, testlardan o‘tkazing va yechimlarni mustahkamlang.
Test Sinovi
Hali topshirilmagan (kamida 75% kerak)
Amaliy Masalalar
0 / 3 ta yechildi (kamida 75% kerak)
Dars sifati va mazmunini yaxshilash uchun o‘z haqqoniy bahoingizni qoldiring.
Mavzuni to‘liq o‘zlashtirish uchun test sinovi, amaliy kodlash va bog‘liq darslar
O‘z bilimingizni interaktiv test savollari orqali tekshiring va darhol xatolarni tahlil qiling.
Nazariyani real kod yozish bilan mustahkamlang, avtomatik testlardan o‘ting va XP to‘plang.
Kurs bo‘yicha keyingi va bog‘liq mavzular: