JavaScript da Tsikllarni Misol Qilib Kodni Debug Qilish Bo‘yicha Maslahatlar
Hozir sizga kodda xatolarni qidirish metodikasini o‘rgataman. Tasavvur qiling, siz qandaydir tushunmovchilik tufayli oldingi darsdagi maslahatlarga amal qilmadingiz va ishlamaydigan kod oldingiz. Keling, xatolarni qanday topish va uni ishlashiga qanday yo‘l qo‘yishni ko‘rib chiqaylik.
Ko‘plab yangi boshlanuvchilar noto‘g‘ri qidiruv usulidan foydalanadilar. Ular kodni o‘rganadilar, xato ko‘rishga umid qilgan holda. Va bir-ikki soat shunday. Bu ishlamaydi.
To‘g‘ri metodika - bu o‘zgaruvchilarni konsolga chiqarish va kerakli narsa u yerda bor-yo‘qligini aniqlash. Bunda muammoning taxmin qilingan joyidan boshlanib, kod bo‘yicha yuqoriga harakat qilish kerak. Keling, amalda ko‘ramiz.
Misol uchun, sizning oldingizda ikki xonali sonlar massivini ko‘rib chiqish va birinchi raqami ikkinchisidan birga katta bo‘lgan sonlarni topish vazifasi turgan bo‘lsin. Soddalik uchun massivda raqamlar satr shaklida saqlansin.
Siz masalani yechdingiz va quyidagi kodni oldingiz deb faraz qilaylik:
let arr = ['21', '32', '34', '43', '45', '54', '55'];
let sum = 0;
for (let elem of arr) {
if (elem[0] === elem[1] + 1) {
sum += elem;
}
}
console.log(sum); // 0 ni beradi
Biroq, kod 0 ni beradi. Bu
holatda birinchi navbatda tekshirish kerak,
kod if ga kirish bormi yo‘qmi.
Uning ichida konsolga nimanidir chiqaramiz:
let arr = ['21', '32', '34', '43', '45', '54', '55'];
let sum = 0;
for (let elem of arr) {
if (elem[0] === elem[1] + 1) {
console.log('!'); // hech narsa chiqarmaydi
sum += elem;
}
}
console.log(sum);
Konsolda hech narsa paydo bo‘lmagani uchun, bu shuni anglatadiki, kod shartga umuman bormayapti. Keling, ko‘z bilan ko‘rib, nimani solishtiryapmiz:
let arr = ['21', '32', '34', '43', '45', '54', '55'];
let sum = 0;
for (let elem of arr) {
console.log(elem[0], elem[1] + 1); // '2' va '11', '3' va '21' ...
if (elem[0] === elem[1] + 1) {
sum += elem;
}
}
console.log(sum);
Natijada darhol ko‘rinib turibdiki, ikkinchi qo‘shiluvchi ikki xonali. Buning sababi, bitta satr sifatida qo‘shilayotganligi easy tushuniladi. Muammoni tuzatamiz:
let arr = ['21', '32', '34', '43', '45', '54', '55'];
let sum = 0;
for (let elem of arr) {
if (+elem[0] === +elem[1] + 1) { // tuzatamiz
sum += elem;
}
}
console.log(sum); // '021324354'
Tuzatishdan so‘ng biz allaqachon ko‘ramizki,
sum o‘zgaruvchisida nima bo‘lsa paydo bo‘ldi,
garchi noto‘g‘ri bo‘lsa ham. Biroq, ko‘rinib turibdiki,
kerakli narsa u yerda, lekin u raqamlar shaklida emas,
balki satrlar shaklida qo‘shilgan. Muammoni tuzatamiz:
let arr = ['21', '32', '34', '43', '45', '54', '55'];
let sum = 0;
for (let elem of arr) {
if (+elem[0] === +elem[1] + 1) {
sum += +elem; // tuzatamiz
}
}
console.log(sum); // hammasi ishlaydi
Quyidagi kodda qilingan xatolarni tuzating:
let obj = {a: 10, b: 20, c: 30, d: 40, e: 50};
let sum = 0;
for (let elem in obj) {
if (elem[0] === '1' && elem[0] === '2') {
sum += +elem;
}
}
console.log(sum);