JavaScript Döngüleri Örneğinde Kod Hata Ayıklama İpuçları

Şimdi size kodda hata arama metodolojisini öğreteceğim. Bir yanlış anlama sonucu önceki dersteki tavsiyelere uymadığınızı ve çalışmayan bir kodla karşılaştığınızı varsayalım. Hataları nasıl bulacağımızı ve onu çalıştıracağımızı görelim.

Birçok yeni başlayan yanlış arama metodolojisi kullanır. Koda bakarlar ve hatayı fark edeceklerini umarlar. Ve bu birkaç saat böyle devam eder. Bu şekilde olmaz.

Doğru metodoloji, değişkenleri konsola yazdırmak ve orada ihtiyaç duyulan şeyin olup olmadığını belirlemektir. Bu durumda, sorunun olduğu tahmin edilen yerden başlamalı ve kodda yukarı doğru ilerlemelisiniz. Pratikte görelim.

Örnek olarak, önünüzde iki basamaklı sayılardan oluşan bir diziyi dolaşmak ve ilk rakamı ikincisinden bir fazla olan sayıları bulma görevi olduğunu varsayalım. Basitlik için, dizide sayılar string olarak saklansın.

Görevi çözdüğünüzü ve aşağıdaki kodu elde ettiğinizi varsayalım:

javascriptlet 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 veriyor

Ancak kod 0 veriyor. Bu durumda ilk olarak, kodun if'in içine girip girmediğini kontrol etmek gerekir. İçine konsola bir şeyler yazdıralım:

javascriptlet arr = ['21', '32', '34', '43', '45', '54', '55'];
let sum = 0;

for (let elem of arr) {
  if (elem[0] === elem[1] + 1) {
    console.log('!'); // hiçbir şey yazdırmıyor
    sum += elem;
  }
}

console.log(sum);

Konsolda hiçbir şey görünmediğine göre, bu, kodun koşulun içine hiç girmediği anlamına gelir. Kendi gözlerimizle neyi karşılaştırdığımıza bakalım:

javascriptlet arr = ['21', '32', '34', '43', '45', '54', '55'];
let sum = 0;

for (let elem of arr) {
  console.log(elem[0], elem[1] + 1); // '2' ve '11', '3' ve '21' ...
  
  if (elem[0] === elem[1] + 1) {
    sum += elem;
  }
}

console.log(sum);

Sonuç olarak, ikinci terimin iki basamaklı olduğu hemen görünür olur. Bunun, birin bir string olarak eklendiği için olduğunu anlamak kolaydır. Sorunu düzeltelim:

javascriptlet arr = ['21', '32', '34', '43', '45', '54', '55'];
let sum = 0;

for (let elem of arr) {
  if (+elem[0] === +elem[1] + 1) { // düzeltiyoruz
    sum += elem;
  }
}

console.log(sum); // '021324354'

Düzeltmeden sonra, sum değişkeninde artık bir şeyler olduğunu görüyoruz, her ne kadar hatalı olsa da. Ancak, orada ihtiyacımız olan şeyin olduğu, ancak sayılar yerine stringler olarak toplandığı görülüyor. Sorunu düzeltelim:

javascriptlet arr = ['21', '32', '34', '43', '45', '54', '55'];
let sum = 0;

for (let elem of arr) {
  if (+elem[0] === +elem[1] + 1) {
    sum += +elem; // düzeltiyoruz
  }
}

console.log(sum); // her şey çalışıyor
Задание 1

Aşağıdaki kodda yapılan hataları düzeltin:

javascriptlet 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);