Yaygın hata kalıpları
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
-
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
-
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.
-
Katı eşitliği ekle
if (count ____ 5) { console.log("beş"); }Cevabı göster
if (count === 5) { console.log("beş"); }