CodeBlanks Logo Icon CodeBlanks

Yaygın hata kalıpları

JavaScript kursu · Başlangıç · Ders 127/133

Off-by-one, undefined erişimi ve yanlış karşılaştırma gibi sık hataları tanırsın.

Off-by-one hatası

Off-by-one hatası, bir sınırın bir eksik ya da bir fazla olmasından doğar. En sık <= yerine < (ya da tersi) yazıldığında görülür. Örneğin for (let i = 0; i <= arr.length; i++) döngüsü diziyi bir adım fazla dolaşır; son adımda arr[arr.length] olan undefined değerine erişir.

Doğrusu genellikle i < arr.length'tir. Sınır koşulunu yazarken eşitlik olup olmadığını her zaman düşün.

undefined erişimi ve yanlış karşılaştırma

Başka iki sık hata: undefined erişimi ve yanlış karşılaştırma. Bir nesnenin olmayan özelliğine erişince undefined alırsın; bunu üzerinde işlem yaparsan TypeError fırlatılır. Önce var olduğunu denetle.

== operatörü tür dönüştürmesi yaptığı için sürpriz sonuçlar verebilir (0 == "" doğrudur). Tipi de önemliyse === kullan. Bu, eşitliği yanıltmaz.

Uygulama Sınır hatasını düzelt

sumFirst(nums, k) adında bir fonksiyon tanımla. Dizinin ilk k elemanını toplayıp döndürsün. for (let i = 0; i < k; i++) döngüsü kullansın (off-by-one'dan kaçınmak için <= değil <). Sonra sumFirst([10, 20, 30, 40], 3) çağrısının sonucunu result değişkenine ata ve console.log(result) ile yazdır.

Örnek çözümü göster
function sumFirst(nums, k) {
  let total = 0;
  for (let i = 0; i < k; i++) {
    total += nums[i];
  }
  return total;
}

const result = sumFirst([10, 20, 30, 40], 3);
console.log(result);

Kendini test et

  1. Hata kalıbını eşleştir

    i <= arr.length
    Diziyi bir adım fazla dolaşır
    i < arr.length
    Diziyi tam dolaşır
    arr[arr.length]
    undefined değeridir
    arr[0]
    İlk elemandır
  2. Hangisi off-by-one hatasıdır?

    • for (let i = 0; i <= arr.length; i++)
    • for (let i = 0; i < arr.length; i++)
    • const first = arr[0]
    • console.log(arr)
    Cevabı göster

    for (let i = 0; i <= arr.length; i++) — Doğru. <= kullandığın için dizi bir adım fazla dolaşılır.

  3. Katı eşitliği ekle

    if (count ____ 5) {
      console.log("beş");
    }
    Cevabı göster
    if (count === 5) {
      console.log("beş");
    }

Başlangıç bölümündeki tüm dersler