Beklenmedik Hata ile Karşılaşma

JavaScript ile bir hesap makinesi yaparken karşılaştığım ilginç bir hata ve çözüm sürecim...

Hatalı Kod:


function hesapla(sayi1, sayi2, islem) {
    switch(islem) {
        case '+':
            return sayi1 + sayi2;
        case '-':
            return sayi1 - sayi2;
        case '*':
            return sayi1 * sayi2;
        case '/':
            return sayi1 / sayi2;
    }
}

let sonuc = hesapla("5", "3", "+"); // "53" çıktısı!
                            

Sorun:

String birleştirme (concatenation) vs sayısal toplama problemi

Çözüm:


function hesapla(sayi1, sayi2, islem) {
    // String değerleri sayıya çevirme
    sayi1 = Number(sayi1);
    sayi2 = Number(sayi2);
    
    switch(islem) {
        case '+':
            return sayi1 + sayi2;
        // ...diğer işlemler
    }
}
                            

Kullandığım Debug Araçları

  • Console.log Debugging

    Değişkenlerin değerlerini ve tiplerini kontrol etme

    console.log(typeof sayi1, sayi1);
  • Breakpoints

    Kod akışını adım adım takip etme

  • Chrome DevTools

    Sources panelinde değişkenleri izleme

Öğrendiğim Dersler

  • Veri tiplerinin önemi
  • Sistematik hata ayıklama yaklaşımı
  • Debugging araçlarının etkin kullanımı
  • Hata mesajlarını doğru yorumlama

İpuçları

  1. Sorunu küçük parçalara böl
  2. Varsayımlarını test et
  3. Hata mesajlarını dikkatlice oku
  4. Debug araçlarını öğren