IlmHamroh
JavaScript Full-stack/8-qism. JavaScript asoslari3/61-dars16 daqiqa
Mundarija (33)

JavaScript console: log, warn, error, table va boshqa foydali metodlar

Qisqacha: console — JavaScript'ning tayyor asboblar qutisi, console.log esa undagi bitta asbob, xolos. warn va error muammolarni ajratib ko'rsatadi, table ro'yxatni jadval qiladi, group xabarlarni guruhlaydi. time vaqtni o'lchaydi, count sanaydi, assert tekshiradi, trace esa kod qayerdan chaqirilganini ko'rsatadi. Bu metodlar brauzerda ham, Node.js'da ham ishlaydi.

Bu darsda

  • log, info, debug, warn va error farqini bilasiz va har birini o'z joyida ishlata olasiz.
  • Ro'yxatni console.table bilan jadval ko'rinishida chiqara olasiz.
  • Xabarlarni group bilan guruhlay olasiz, count bilan sanay olasiz, time bilan vaqtni o'lchay olasiz.
  • assert va trace nima uchun kerakligini tushuntira olasiz.
  • Brauzer konsoliga %c yordamida 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: "console ichidagi log".

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:

js
console.log("Narx:", 25000, "so'm");
console.log("Taksi:", 3, "km,", 15000, "so'm");

Konsolda:

text
Narx: 25000 so'm
Taksi: 3 km, 15000 so'm

Bo'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:

js
console.log("%s %d yoshda", "Ali", 20);
console.log("Qoldiq: %i dona", 42.9);
console.log("Narx: %f dollar", 1.5);

Konsolda:

text
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 %s va %d kam ishlatiladi. Qiymatni matnga qo'shishning qulayroq usuli bor — template literals. Lekin eski kodda uchratasiz. %c esa 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:

js
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'lov deb yozsangiz, qolgan xabarlar yashirinadi.
  • Default levels ro'yxati — qaysi darajalar ko'rinishini tanlaysiz. Faqat Errors ni belgilasangiz, 200 ta xabardan faqat xatolar qoladi.

Mana shuning uchun darajalar kerak: kerakli xabarni bir zumda topasiz.

Diqqat: Chrome console.debug xabarlarini odatda ko'rsatmaydi. "Kodim ishlamayapti" deb o'ylamang. Default levels ro'yxatida Verbose ni 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:

text
Oddiy xabar
Ma'lumot: foydalanuvchi kirdi
Tafsilot: tugma bosildi
Ogohlantirish: karta muddati tugayapti
Xato: to'lov o'tmadi

Rang 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:

bash
node app.js > log.txt

Terminalda faqat ikki qator qoladi:

text
Ogohlantirish: karta muddati tugayapti
Xato: to'lov o'tmadi

Qolgan 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, warn yoki error?

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". Unda ism va ball — maydon nomlari, "Ali" va 85 — 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.

js
console.table(["Osh", "Manti", "Lag'mon"]);

Konsolda:

text
┌─────────┬───────────┐
│ (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:

js
console.table([
  { ism: "Ali", ball: 85 },
  { ism: "Malika", ball: 92 },
  { ism: "Jasur", ball: 78 },
]);

Konsolda:

text
┌─────────┬──────────┬──────┐
│ (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:

js
console.table(
  [
    { ism: "Ali", ball: 85 },
    { ism: "Malika", ball: 92 },
  ],
  ["ism"],
);

Konsolda:

text
┌─────────┬──────────┐
│ (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:

js
console.log({
  ism: "Malika",
  manzil: {
    shahar: "Toshkent",
    tuman: { nomi: "Chilonzor", kvartal: { raqam: 9 } },
  },
});

Konsolda:

text
{
  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":

js
console.dir(
  {
    ism: "Malika",
    manzil: {
      shahar: "Toshkent",
      tuman: { nomi: "Chilonzor", kvartal: { raqam: 9 } },
    },
  },
  { depth: null },
);

Konsolda:

text
{
  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:

js
console.log(document.body); // <body>...</body> ko'rinishida
console.dir(document.body); // body va uning xususiyatlari ro'yxati

Buning 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:

js
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:

text
Buyurtma #15
  Osh — 35000 so'm
  Choy — 5000 so'm
  Yetkazish
    Manzil: Chilonzor, 9-kvartal
Kassa yopildi

Guruh 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:

js
console.count("mijoz");
console.count("mijoz");
console.count("mijoz");
console.countReset("mijoz");
console.count("mijoz");

Konsolda:

text
mijoz: 1
mijoz: 2
mijoz: 3
mijoz: 1

console.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:

js
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:

text
Choy damlanmoqda...
tayyorlash: 3.784ms
Non kesilmoqda...
tayyorlash: 4.064ms

ms — 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: time va timeEnd dagi nom harfma-harf bir xil bo'lsin. console.time("Tayyorlash") va console.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:

js
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):

text
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:

js
console.trace("Shu yerdaman");

Terminalda (trace ham stderr'ga yozadi) birinchi qatorlar shunday chiqadi:

text
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?

js
console.count("tugma");
console.assert(2 > 1, "Xato!");
console.count("tugma");
Javob
text
tugma: 1
tugma: 2

2 > 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!

js
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:

js
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

js
Console.log("Salom");
text
ReferenceError: Console is not defined

Tarjimasi: "Console aniqlanmagan". JavaScript katta va kichik harfni farqlaydi. console bor, Console esa yo'q. Doim kichik harf bilan yozing.

9.2 Metod nomida xato

js
console.Log("Salom");
text
TypeError: console.Log is not a function

Tarjimasi: "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

js
console.log "Salom";
text
SyntaxError: Unexpected string

Tarjimasi: "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'm
  • console.warn — Karta balansi kam qoldi
  • console.error — To'lov rad etildi

Ishora: matnlarda apostrof bor (To'lov), shuning uchun qo'shtirnoq "..." ishlating.

Yechim
js
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:

text
To'lov boshlandi: 120000 so'm
Karta balansi kam qoldi
To'lov rad etildi

Brauzerda 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
js
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:

text
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:

  1. console.count("stol") bilan stol raqamini sanang, keyin console.group("Buyurtma") ochib, ichida taomlarni chiqaring. Birinchi stol: Osh — 35000 so'm va Choy — 5000 so'm. Ikkinchi stol: Manti — 30000 so'm. Har bir guruhni groupEnd bilan yoping.
  2. Oxirida console.assert bilan 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
js
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):

text
stol: 1
Buyurtma
  Osh — 35000 so'm
  Choy — 5000 so'm
stol: 2
Buyurtma
  Manti — 30000 so'm
Assertion failed: 1-stol limitdan oshdi

35000 + 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.log qo'yib, qiymatlarni kuzatish. table va group bu 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.log qolmasin. Jamoalarda kod tekshiruvchi vosita (ESLint, keyinroq o'rganamiz) unutilgan console.log larni 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'da warn va error stderr'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.

Ulashish:Telegram'da

Izohlar (0)

Izoh yozish uchun kiring.

  • Hozircha izoh yo'q. Birinchi bo'ling!
JavaScript console: log, warn, error, table va boshqa foydali metodlar — IlmHamroh