Mundarija (33)
- Bu darsda
- 1. Nega bu kerak?
- 2. console va uning metodlari
- 3. console.log — yana bir bor, chuqurroq
- 3.1 Bir nechta qiymat
- 3.2 Formatlash belgilari: %s, %d, %i, %f
- 4. Xabar darajalari: info, debug, warn, error
- 4.1 Beshta daraja
- 4.2 Brauzerda xabarlarni saralash
- 4.3 Node.js'da: ikki xil oqim
- 5. console.table — ro'yxatni jadval qilish
- 5.1 Oddiy ro'yxat
- 5.2 Kartochkalar ro'yxati
- 6. console.dir — ichma-ich ma'lumotni ochish
- 7. Guruhlash, sanash, vaqt va tekshirish
- 7.1 console.group — xabarlarni guruhlash
- 7.2 console.count — necha marta?
- 7.3 console.time — vaqtni o'lchash
- 7.4 console.assert — "bunday bo'lishi kerak edi"
- 7.5 console.trace — "meni kim chaqirdi?"
- 8. %c — rangli va katta xabarlar (brauzerda)
- 9. Ko'p uchraydigan xatolar
- 9.1 Katta harf bilan Console
- 9.2 Metod nomida xato
- 9.3 Qavsni unutish
- 9.4 debug xabarlari ko'rinmayapti
- 9.5 group ni yopmaslik
- 10. Mashqlar
- 1-mashq (oson): To'lov xabarlari
- 2-mashq (o'rta): Taksi haydovchilari jadvali
- 3-mashq (qiyin): Choyxona kassasi
- 11. Real ishda
- Xulosa
JavaScript console: log, warn, error, table va boshqa foydali metodlar
Qisqacha:
console— JavaScript'ning tayyor asboblar qutisi,console.logesa undagi bitta asbob, xolos.warnvaerrormuammolarni ajratib ko'rsatadi,tablero'yxatni jadval qiladi,groupxabarlarni guruhlaydi.timevaqtni o'lchaydi,countsanaydi,asserttekshiradi,traceesa kod qayerdan chaqirilganini ko'rsatadi. Bu metodlar brauzerda ham, Node.js'da ham ishlaydi.
Bu darsda
log,info,debug,warnvaerrorfarqini bilasiz va har birini o'z joyida ishlata olasiz.- Ro'yxatni
console.tablebilan jadval ko'rinishida chiqara olasiz. - Xabarlarni
groupbilan guruhlay olasiz,countbilan sanay olasiz,timebilan vaqtni o'lchay olasiz. assertvatracenima uchun kerakligini tushuntira olasiz.- Brauzer konsoliga
%cyordamida rangli, katta harfli xabar chiqara olasiz.
Oldin bilishingiz kerak: Birinchi dastur: konsol va <script> tegi, Oqimlar, pipe va yo'naltirish.
1. Nega bu kerak?
O'tgan darsda kodni uch joyda ishga tushirdingiz. Hammasida bitta buyruq ishlatdik — console.log. U juda foydali, lekin dastur kattalashganda muammo boshlanadi.
Tasavvur qiling: dasturingiz konsolga 200 ta xabar chiqardi. Ularning orasida bitta muhim xato bor. Uni qanday topasiz? Hamma xabar bir xil ko'rinsa — qiyin.
Shifokorni eslang. Uning qo'lida faqat termometr bo'lsa, ko'p kasallikni aniqlay olmaydi. Unga stetoskop, tonometr, rentgen ham kerak. Dasturchi uchun console — xuddi shunday asboblar to'plami. Har bir asbob o'z ishiga mos.
Bu darsdan keyin konsolingiz tartibli bo'ladi: xatolar qizil, ogohlantirishlar sariq, ro'yxatlar jadvalda.
2. console va uning metodlari
console.log yozuvini ikki qismga ajratamiz:
console— JavaScript'ning tayyor asboblar qutisi. Uni hech kim e'lon qilmaydi, u doim bor..log— shu qutidagi bitta asbob. Nuqta "ichidagi" degan ma'noni beradi: "consoleichidagilog".
Biror narsaga biriktirilgan buyruq metod (method) deyiladi. Xuddi telefoningizdagi ilovalar kabi: telefon bitta, ilovalar ko'p — kamera, kalkulyator, soat. console — telefon, log, warn, table — ilovalar.
Bu darsda o'rganadigan metodlar:
| Metod | Nima qiladi |
|---|---|
log, info, debug |
Oddiy xabar |
warn |
Ogohlantirish (sariq) |
error |
Xato xabari (qizil) |
table |
Ro'yxatni jadval qiladi |
dir |
Ichma-ich ma'lumotni to'liq ochadi |
group, groupEnd |
Xabarlarni guruhlaydi |
count, countReset |
Necha marta chaqirilganini sanaydi |
time, timeLog, timeEnd |
Vaqtni o'lchaydi |
assert |
Shart bajarilmasa, xato chiqaradi |
trace |
Kod qayerdan kelganini ko'rsatadi |
clear |
Konsolni tozalaydi |
Ro'yxat uzun ko'rinadi, lekin qo'rqmang. Har biri bir-ikki qatorda o'rganiladi.
3. console.log — yana bir bor, chuqurroq
3.1 Bir nechta qiymat
Qavs ichiga vergul bilan bir nechta narsa berish mumkin. console.log ularni bo'sh joy bilan ajratib chiqaradi:
console.log("Narx:", 25000, "so'm");
console.log("Taksi:", 3, "km,", 15000, "so'm");Konsolda:
Narx: 25000 so'm
Taksi: 3 km, 15000 so'mBo'sh joyni o'zingiz qo'yishingiz shart emas — console.log uni avtomatik qo'shadi. Qavsni bo'sh qoldirsangiz (console.log()), bo'sh qator chiqadi. Xabarlarni bir-biridan ajratish uchun qulay.
3.2 Formatlash belgilari: %s, %d, %i, %f
Matn ichiga maxsus belgi qo'yib, qiymatni aynan o'sha joyga joylash mumkin:
console.log("%s %d yoshda", "Ali", 20);
console.log("Qoldiq: %i dona", 42.9);
console.log("Narx: %f dollar", 1.5);Konsolda:
Ali 20 yoshda
Qoldiq: 42 dona
Narx: 1.5 dollar| Belgi | Nima joylanadi |
|---|---|
%s |
Matn (string) |
%d yoki %i |
Butun son (kasr qismi tashlab yuboriladi) |
%f |
Kasr son |
%o va %O |
Ichma-ich ma'lumot (obyekt — console.table bo'limida ko'rasiz) |
%c |
CSS still (faqat brauzerda, 8-bo'limda) |
Belgilar tartib bilan to'ldiriladi: birinchi belgiga — birinchi qiymat, ikkinchisiga — ikkinchisi. Bu darsda bizga %s, %d va %c yetadi, %o/%O ni hozir yodlash shart emas.
Maslahat: Bugun
%sva%dkam ishlatiladi. Qiymatni matnga qo'shishning qulayroq usuli bor — template literals. Lekin eski kodda uchratasiz.%cesa o'rnini bosib bo'lmaydigan belgi — uni alohida ko'ramiz.
Tekshirib ko'ring:
console.log("Buyurtma:", 2, "ta", "osh")nima chiqaradi?
Javob
Buyurtma: 2 ta osh. To'rtta qiymat bor, console.log ular orasiga bittadan bo'sh joy qo'yadi.
4. Xabar darajalari: info, debug, warn, error
4.1 Beshta daraja
Hamma xabar bir xil muhim emas. "Foydalanuvchi kirdi" — oddiy ma'lumot. "Karta muddati tugayapti" — ogohlantirish. "To'lov o'tmadi" — xato. JavaScript har biri uchun alohida metod beradi:
console.log("Oddiy xabar");
console.info("Ma'lumot: foydalanuvchi kirdi");
console.debug("Tafsilot: tugma bosildi");
console.warn("Ogohlantirish: karta muddati tugayapti");
console.error("Xato: to'lov o'tmadi");Brauzer konsolida ular turlicha ko'rinadi:
| Metod | Chrome'da ko'rinishi | Filtrdagi nomi |
|---|---|---|
log, info |
Oddiy matn | Info |
debug |
Oddiy matn, lekin odatda yashirin | Verbose |
warn |
Sariq fon va ogohlantirish belgisi | Warnings |
error |
Qizil fon va xato belgisi | Errors |
warn va error xabarlari yonida kichik uchburchak (▶) bor. Uni bossangiz, xabar kodning qaysi qatoridan chiqqani ko'rinadi. Chrome yuqori burchakda xatolar sonini ham ko'rsatib turadi.
4.2 Brauzerda xabarlarni saralash
Console panelining yuqorisida ikki foydali vosita bor:
- Filter maydoni — faqat shu so'z bor xabarlarni qoldiradi. Masalan,
to'lovdeb yozsangiz, qolgan xabarlar yashirinadi. - Default levels ro'yxati — qaysi darajalar ko'rinishini tanlaysiz. Faqat
Errorsni belgilasangiz, 200 ta xabardan faqat xatolar qoladi.
Mana shuning uchun darajalar kerak: kerakli xabarni bir zumda topasiz.
Diqqat: Chrome
console.debugxabarlarini odatda ko'rsatmaydi. "Kodim ishlamayapti" deb o'ylamang. Default levels ro'yxatidaVerboseni belgilang — xabarlar paydo bo'ladi.
4.3 Node.js'da: ikki xil oqim
Terminalda node app.js bilan ishga tushirsangiz, beshala xabar oddiy matn bo'lib chiqadi:
Oddiy xabar
Ma'lumot: foydalanuvchi kirdi
Tafsilot: tugma bosildi
Ogohlantirish: karta muddati tugayapti
Xato: to'lov o'tmadiRang yo'q, lekin farq bor va u muhim. Oqimlar darsida ko'rgansiz: dasturda ikki chiqish yo'li bor. stdout — oddiy natijalar uchun, stderr — xatolar uchun. Node log, info, debug ni stdout'ga, warn va error ni esa stderr'ga yozadi.
Tekshirib ko'ring. Oddiy natijalarni faylga yo'naltiramiz:
node app.js > log.txtTerminalda faqat ikki qator qoladi:
Ogohlantirish: karta muddati tugayapti
Xato: to'lov o'tmadiQolgan uchtasi log.txt fayliga tushdi. Xatolar esa ekranda qoldi — ular yo'qolib ketmaydi. Serverlarda aynan shunday qilinadi: oddiy yozuvlar bir faylga, xatolar boshqa joyga yig'iladi.
Tekshirib ko'ring: Dasturingiz foydalanuvchining yoshi kiritilmaganini sezdi, lekin ishlashda davom eta oladi. Qaysi metodni ishlatasiz:
log,warnyokierror?
Javob
console.warn. Dastur buzilmadi, lekin e'tibor berish kerak bo'lgan holat — bu ogohlantirish. error — ish bajarilmay qolganda (to'lov o'tmadi, fayl topilmadi). log esa hammasi joyida bo'lgan oddiy xabar uchun.
5. console.table — ro'yxatni jadval qilish
5.1 Oddiy ro'yxat
Bu yerda bizga hali o'tilmagan ikki yozuv kerak bo'ladi. Qisqacha tushuntiraman:
[ ... ]— massiv: qiymatlar ro'yxati, vergul bilan ajratiladi. Batafsil — massivlar darsida.{ ism: "Ali", ball: 85 }— obyekt: bitta "kartochka". Undaismvaball— maydon nomlari,"Ali"va85— ularning qiymatlari. JavaScript'da bunday nomli maydon xususiyat (property) deyiladi. Batafsil — obyektlar darsida.
Hozir ularni shunchaki ko'chirib yozing — console.table qanday ishlashini ko'rish uchun yetarli.
console.table(["Osh", "Manti", "Lag'mon"]);Konsolda:
┌─────────┬───────────┐
│ (index) │ Values │
├─────────┼───────────┤
│ 0 │ 'Osh' │
│ 1 │ 'Manti' │
│ 2 │ "Lag'mon" │
└─────────┴───────────┘(index) — tartib raqami. U 0 dan boshlanadi — JavaScript'da sanash doim noldan boshlanadi. Nega shunday ekanini massivlar darsida ko'ramiz. Values — qiymatlar ustuni.
"Lag'mon" qo'shtirnoqda, qolganlari apostrofda chiqdi. Node matn ichida apostrof bo'lsa, chalkashmaslik uchun qo'shtirnoq ishlatadi. Ma'nosi bir xil — bu matn.
5.2 Kartochkalar ro'yxati
console.table ning haqiqiy kuchi — kartochkalar ro'yxatida. Yozuvni tashqaridan ichkariga o'qing: tashqi [ ] — ro'yxat. Uning ichida har bir { } — bitta kartochka. Kartochkalar orasida vergul turadi:
console.table([
{ ism: "Ali", ball: 85 },
{ ism: "Malika", ball: 92 },
{ ism: "Jasur", ball: 78 },
]);Konsolda:
┌─────────┬──────────┬──────┐
│ (index) │ ism │ ball │
├─────────┼──────────┼──────┤
│ 0 │ 'Ali' │ 85 │
│ 1 │ 'Malika' │ 92 │
│ 2 │ 'Jasur' │ 78 │
└─────────┴──────────┴──────┘Har bir kartochka — jadvalning bitta qatori, maydon nomlari — ustunlar. console.log bilan bu ma'lumot bir uyum qavs va vergul bo'lib chiqardi. Jadvalda esa bir qarashda ko'rinadi.
Faqat ba'zi ustunlar kerak bo'lsa, ikkinchi qiymat qilib ustun nomlarini bering:
console.table(
[
{ ism: "Ali", ball: 85 },
{ ism: "Malika", ball: 92 },
],
["ism"],
);Konsolda:
┌─────────┬──────────┐
│ (index) │ ism │
├─────────┼──────────┤
│ 0 │ 'Ali' │
│ 1 │ 'Malika' │
└─────────┴──────────┘Brauzer konsolidagi jadval yanada qulay: ustun nomini bossangiz, jadval shu ustun bo'yicha saralanadi.
6. console.dir — ichma-ich ma'lumotni ochish
Kartochka ichida yana kartochka bo'lishi mumkin. Masalan, manzil ichida tuman, tuman ichida kvartal:
console.log({
ism: "Malika",
manzil: {
shahar: "Toshkent",
tuman: { nomi: "Chilonzor", kvartal: { raqam: 9 } },
},
});Konsolda:
{
ism: 'Malika',
manzil: {
shahar: 'Toshkent',
tuman: { nomi: 'Chilonzor', kvartal: [Object] }
}
}kvartal o'rnida [Object] chiqdi — ichidagi raqam: 9 ko'rinmayapti! Node joy tejash uchun tashqi kartochkadan keyin faqat ikki qavat ichkarigacha ko'rsatadi. Undan chuqurrog'ini [Object] deb qisqartiradi.
Hammasini ko'rish uchun console.dir ga { depth: null } ni bering. depth — "chuqurlik", null — "cheklovsiz":
console.dir(
{
ism: "Malika",
manzil: {
shahar: "Toshkent",
tuman: { nomi: "Chilonzor", kvartal: { raqam: 9 } },
},
},
{ depth: null },
);Konsolda:
{
ism: 'Malika',
manzil: {
shahar: 'Toshkent',
tuman: { nomi: 'Chilonzor', kvartal: { raqam: 9 } }
}
}Brauzerda esa console.dir boshqa ish uchun kerak. console.log(document.body) sahifa qismini HTML ko'rinishida chiqaradi. console.dir(document.body) esa uning JavaScript'dagi barcha xususiyatlarini ro'yxat qilib ko'rsatadi:
console.log(document.body); // <body>...</body> ko'rinishida
console.dir(document.body); // body va uning xususiyatlari ro'yxatiBuning foydasini brauzer qismida sahifa bilan ishlaganda ko'rasiz.
7. Guruhlash, sanash, vaqt va tekshirish
7.1 console.group — xabarlarni guruhlash
Xabarlar ko'payganda ularni mavzu bo'yicha guruhlash qulay. console.group("nom") guruhni ochadi, console.groupEnd() yopadi:
console.group("Buyurtma #15");
console.log("Osh — 35000 so'm");
console.log("Choy — 5000 so'm");
console.group("Yetkazish");
console.log("Manzil: Chilonzor, 9-kvartal");
console.groupEnd();
console.groupEnd();
console.log("Kassa yopildi");Konsolda:
Buyurtma #15
Osh — 35000 so'm
Choy — 5000 so'm
Yetkazish
Manzil: Chilonzor, 9-kvartal
Kassa yopildiGuruh ichidagi xabarlar o'ngga suriladi. Guruh ichida yana guruh ochish mumkin. Har bir group ga bitta groupEnd kerak — ular juft bo'lib yuradi.
Brauzerda guruh nomi yonida ▶ belgisi bo'ladi. Uni bosib, guruhni yig'ish yoki ochish mumkin. console.groupCollapsed("nom") guruhni boshidanoq yopiq holda ochadi. Node'da esa u oddiy group kabi ishlaydi.
7.2 console.count — necha marta?
console.count("nom") har chaqirilganda hisoblagichni bittaga oshirib, natijani chiqaradi:
console.count("mijoz");
console.count("mijoz");
console.count("mijoz");
console.countReset("mijoz");
console.count("mijoz");Konsolda:
mijoz: 1
mijoz: 2
mijoz: 3
mijoz: 1console.countReset("mijoz") hisoblagichni nolga qaytaradi. Nom bermasangiz (console.count()), JavaScript default nomini ishlatadi: default: 1.
Qachon kerak? Masalan, tugma necha marta bosilganini yoki kodning biror qismi necha marta ishlaganini bilmoqchisiz. Sikllarni o'rgangach, bu juda asqotadi.
7.3 console.time — vaqtni o'lchash
console.time("nom") sekundomerni yoqadi, console.timeEnd("nom") to'xtatib, o'tgan vaqtni chiqaradi. console.timeLog("nom") esa sekundomerni to'xtatmasdan oraliq vaqtni ko'rsatadi:
console.time("tayyorlash");
console.log("Choy damlanmoqda...");
console.timeLog("tayyorlash");
console.log("Non kesilmoqda...");
console.timeEnd("tayyorlash");Natija har safar biroz boshqacha, chunki vaqt kompyuter tezligiga bog'liq. Masalan:
Choy damlanmoqda...
tayyorlash: 3.784ms
Non kesilmoqda...
tayyorlash: 4.064msms — millisekund, sekundning mingdan bir qismi. Hozir o'lchaydigan og'ir ishimiz yo'q, shuning uchun raqamlar kichik. Keyinroq "qaysi usul tezroq?" degan savolga shu metod bilan javob topasiz.
Diqqat:
timevatimeEnddagi nom harfma-harf bir xil bo'lsin.console.time("Tayyorlash")vaconsole.timeEnd("tayyorlash")— ikki xil sekundomer (katta-kichik harf farqlanadi). Node shunday ogohlantiradi:Warning: No such label 'tayyorlash' for console.timeEnd()— "bunday nomli sekundomer yo'q". Brauzer esa:Timer 'tayyorlash' does not exist.
7.4 console.assert — "bunday bo'lishi kerak edi"
assert — inglizcha "qat'iy ta'kidlash, tasdiqlash". console.assert(shart, xabar) — shartni tekshiradi. Shart to'g'ri bo'lsa — jim turadi. Noto'g'ri bo'lsa — xabarni xato sifatida chiqaradi:
console.assert(10 > 5, "Bu xabar chiqmaydi");
console.assert(3 > 5, "Omborda 5 ta non yo'q!");
console.log("Dastur davom etyapti");Terminalda (Assertion failed qatori stderr'ga, qolgani stdout'ga yoziladi):
Assertion failed: Omborda 5 ta non yo'q!
Dastur davom etyapti> — maktabdan tanish "katta" belgisi. 10 > 5 — to'g'ri, 3 > 5 — noto'g'ri. Xuddi shunday < — "kichik", <= — "kichik yoki teng" (matematikadagi ≤), >= — "katta yoki teng" (≥). Ikki belgi orasida bo'sh joy qoldirilmaydi: <=, < = emas. Taqqoslash belgilarini taqqoslash operatorlari darsida batafsil o'rganamiz.
Assertion failed — "tasdiq bajarilmadi", ya'ni siz kutgan holat yuz bermadi. E'tibor bering: xabardan keyin dastur to'xtamadi. console.assert faqat ogohlantiradi, dasturni to'xtatmaydi.
7.5 console.trace — "meni kim chaqirdi?"
console.trace() xabar bilan birga kodning "yo'lini" ham chiqaradi: qaysi fayl, qaysi qator:
console.trace("Shu yerdaman");Terminalda (trace ham stderr'ga yozadi) birinchi qatorlar shunday chiqadi:
Trace: Shu yerdaman
at Object.<anonymous> (D:\salom-js\app.js:1:9)app.js:1:9 — "app.js fayli, 1-qator, 9-belgi". Undan keyin Node'ning ichki qatorlari keladi — ularga e'tibor bermasangiz ham bo'ladi.
Hozir bu kam foydali ko'rinadi, chunki kodimiz bitta joyda. Funksiyalarni o'rgangach, kod bir joydan ikkinchisiga "sakraydi". Shunda trace siz uchun eng muhim savolga javob beradi: "bu qatorga qaysi yo'l bilan keldim?". Kod yo'lini kuzatishni DevTools bilan debug qilish darsida yanada chuqur ko'ramiz.
Tekshirib ko'ring: Quyidagi kod nima chiqaradi?
jsconsole.count("tugma"); console.assert(2 > 1, "Xato!"); console.count("tugma");
Javob
tugma: 1
tugma: 22 > 1 — to'g'ri shart, shuning uchun console.assert jim turdi. console.count("tugma") ikki marta chaqirildi — hisob 1 va 2.
8. %c — rangli va katta xabarlar (brauzerda)
Mana eng chiroyli imkoniyat. %c belgisidan keyingi matnga CSS still beriladi. Siz CSS'ni bilasiz — demak, bu ko'nikma sizda allaqachon bor!
console.log(
"%cIlmHamroh",
"color: green; font-size: 32px; font-weight: bold",
);Brauzer konsolida katta, qalin, yashil "IlmHamroh" yozuvi chiqadi. Bir nechta %c ham ishlatish mumkin — har biri keyingi qismga o'z stilini beradi:
console.log(
"%cXato: %cfayl topilmadi",
"color: red; font-weight: bold",
"color: gray",
);Facebook saytida konsolni ochsangiz, katta qizil "Stop!" yozuvini ko'rasiz. U aynan shunday yozilgan. U foydalanuvchilarni firibgarlardan ogohlantiradi: "Bu yerga notanish odam bergan kodni qo'ymang".
Node.js %c ni tushunmaydi va stilni tashlab yuboradi — faqat matn chiqadi: IlmHamroh.
Maslahat: Konsolni butunlay tozalash uchun
console.clear()ni chaqiring. Brauzerda konsol tozalanadi, terminalda esa ekran.
9. Ko'p uchraydigan xatolar
9.1 Katta harf bilan Console
Console.log("Salom");ReferenceError: Console is not definedTarjimasi: "Console aniqlanmagan". JavaScript katta va kichik harfni farqlaydi. console bor, Console esa yo'q. Doim kichik harf bilan yozing.
9.2 Metod nomida xato
console.Log("Salom");TypeError: console.Log is not a functionTarjimasi: "console.Log — funksiya emas". Bu safar console topildi, lekin uning ichida Log degan asbob yo'q. Xato turi ham boshqa: TypeError — "noto'g'ri turdagi narsa bilan ish qilishga urinish". Funksiya nima ekanini funksiyalar darsida o'rganamiz. Hozircha qoida: is not a function ko'rsangiz, nuqtadan keyingi nomni harfma-harf tekshiring (log, warn, table).
9.3 Qavsni unutish
console.log "Salom";SyntaxError: Unexpected stringTarjimasi: "Kutilmagan matn". JavaScript console.log dan keyin qavs ( kutgan edi, lekin to'g'ridan-to'g'ri matn keldi. Metodga qiymat doim qavs ichida beriladi: console.log("Salom").
9.4 debug xabarlari ko'rinmayapti
Brauzerda console.debug yozdingiz, lekin hech narsa chiqmadi. Kod to'g'ri — Chrome bu darajani odatda yashiradi. Default levels ro'yxatidan Verbose ni yoqing.
9.5 group ni yopmaslik
console.groupEnd() ni unutsangiz, keyingi barcha xabarlar ham guruh ichida qoladi va o'ngga surilib ketadi. Har bir group uchun bitta groupEnd yozing.
10. Mashqlar
1-mashq (oson): To'lov xabarlari
Click orqali to'lov jarayonini konsolda ko'rsating. Uch xil metod ishlating:
console.info—To'lov boshlandi: 120000 so'mconsole.warn—Karta balansi kam qoldiconsole.error—To'lov rad etildi
Ishora: matnlarda apostrof bor (To'lov), shuning uchun qo'shtirnoq "..." ishlating.
Yechim
console.info("To'lov boshlandi: 120000 so'm");
console.warn("Karta balansi kam qoldi");
console.error("To'lov rad etildi");Terminalda uchala qator ham chiqadi, lekin ular ikki xil oqimdan keladi:
To'lov boshlandi: 120000 so'm
Karta balansi kam qoldi
To'lov rad etildiBrauzerda farq ko'zga tashlanadi: birinchisi oddiy, ikkinchisi sariq, uchinchisi qizil. Node'da esa info — stdout'ga, warn va error — stderr'ga yoziladi.
2-mashq (o'rta): Taksi haydovchilari jadvali
console.table yordamida uchta taksi haydovchisini jadval qilib chiqaring. Har birida ism, mashina va reyting maydonlari bo'lsin. Jadvaldan oldin console.log bilan Bugungi haydovchilar: sarlavhasini chiqaring.
Ishora: 5.2-bo'limdagi kartochkalar ro'yxatini namuna qiling. Har bir kartochka { ... } ichida, kartochkalar orasida vergul.
Yechim
console.log("Bugungi haydovchilar:");
console.table([
{ ism: "Rustam", mashina: "Cobalt", reyting: 4.9 },
{ ism: "Bekzod", mashina: "Gentra", reyting: 4.7 },
{ ism: "Sardor", mashina: "Nexia", reyting: 4.8 },
]);Konsolda:
Bugungi haydovchilar:
┌─────────┬──────────┬──────────┬─────────┐
│ (index) │ ism │ mashina │ reyting │
├─────────┼──────────┼──────────┼─────────┤
│ 0 │ 'Rustam' │ 'Cobalt' │ 4.9 │
│ 1 │ 'Bekzod' │ 'Gentra' │ 4.7 │
│ 2 │ 'Sardor' │ 'Nexia' │ 4.8 │
└─────────┴──────────┴──────────┴─────────┘Matnlar ('Rustam') apostrof ichida chiqdi, sonlar (4.9) esa apostrofsiz. Node shu tarzda matn bilan sonni ajratib ko'rsatadi.
3-mashq (qiyin): Choyxona kassasi
Kassa hisobotini yozing:
console.count("stol")bilan stol raqamini sanang, keyinconsole.group("Buyurtma")ochib, ichida taomlarni chiqaring. Birinchi stol:Osh — 35000 so'mvaChoy — 5000 so'm. Ikkinchi stol:Manti — 30000 so'm. Har bir guruhnigroupEndbilan yoping.- Oxirida
console.assertbilan tekshiring: birinchi stolning hisobi (35000 + 5000) 30 000 so'mdan oshmasligi kerak. Xabar:1-stol limitdan oshdi.
Ishora: "oshmasligi kerak" — "kichik yoki teng bo'lishi kerak". JavaScript'da bu <= belgisi (matematikadagi ≤): 35000 + 5000 <= 30000.
Yechim
console.count("stol");
console.group("Buyurtma");
console.log("Osh — 35000 so'm");
console.log("Choy — 5000 so'm");
console.groupEnd();
console.count("stol");
console.group("Buyurtma");
console.log("Manti — 30000 so'm");
console.groupEnd();
console.assert(35000 + 5000 <= 30000, "1-stol limitdan oshdi");Terminalda natija shunday chiqadi (oxirgi qator stderr'dan, qolganlari stdout'dan):
stol: 1
Buyurtma
Osh — 35000 so'm
Choy — 5000 so'm
stol: 2
Buyurtma
Manti — 30000 so'm
Assertion failed: 1-stol limitdan oshdi35000 + 5000 — 40 000. 40 000 ≤ 30 000 — noto'g'ri. Shart bajarilmadi, shuning uchun console.assert xabar chiqardi. Agar limit 50 000 bo'lganda, u jim turardi.
11. Real ishda
- Kundalik debug. Dasturchilar orasida eng ko'p ishlatiladigan xato qidirish usuli —
console.logqo'yib, qiymatlarni kuzatish.tablevagroupbu ishni ancha tezlashtiradi. - Darajalar — server loglarida ham. Backend'da xabarlar xuddi shu darajalarga bo'linadi: info, warn, error. Katta loyihalarda buning uchun maxsus kutubxonalar (masalan, pino) ishlatiladi. Ularni backend qismida o'rganamiz, g'oyasi esa aynan shu.
- Tayyor kodda ortiqcha
console.logqolmasin. Jamoalarda kod tekshiruvchi vosita (ESLint, keyinroq o'rganamiz) unutilganconsole.loglarni ko'rsatib beradi. - Xavfsizlik. Parol, karta raqami yoki tokenni hech qachon konsolga chiqarmang. Brauzer konsolini istalgan foydalanuvchi ochadi. Server loglarini esa ko'p odam o'qiydi.
Xulosa
console— tayyor asboblar qutisi,log,warn,table— uning metodlari.log/info/debug— oddiy xabar,warn— ogohlantirish,error— xato. Node'dawarnvaerrorstderr'ga yoziladi.table— ro'yxatni jadval qiladi.dir(..., { depth: null })— ichma-ich ma'lumotni to'liq ochadi.group/groupEnd— guruhlash,count— sanash,time/timeEnd— vaqt o'lchash.assert— shart noto'g'ri bo'lsa xabar beradi, dasturni to'xtatmaydi.trace— kod yo'lini ko'rsatadi.%c— brauzer konsolida CSS bilan bezalgan xabar.
Keyingi dars: Sintaksis asoslari: ifoda, ko'rsatma va izoh — JavaScript kodi qanday "gaplar"dan tuzilishini, nuqtali vergul va izohlarni o'rganamiz.
Izohlar (0)
Izoh yozish uchun kiring.
- Hozircha izoh yo'q. Birinchi bo'ling!