Debugging sistematis

Cara amatir: mengubah kode secara acak sampai jalan. Cara profesional: reproduce (buat error muncul konsisten) → isolate (persempit sampai kode terkecil yang masih gagal) → fixverify. Fungsi di bawah punya bug klasik; temukan lewat isolasi, bukan tebakan. Setelah bug ditemukan, tulis satu test kecil yang gagal sebelum perbaikan dan lulus sesudahnya — itu cara termurah memastikan bug yang sama tidak kembali.

👀 Contoh dulu

// BUG: kenapa hasilnya undefined?
function ambilPertama(arr) {
  return arr[1];        // ← isolasi: cek asumsi indeks
}
console.log(ambilPertama(['a', 'b']));   // 'b', bukan 'a'

// PERBAIKAN: indeks pertama adalah 0
function ambilPertamaBenar(arr) {
  return arr[0];
}
console.log(ambilPertamaBenar(['a', 'b']));

Hasilnya: b a

💡 Proses: reproduce (jalankan, lihat 'b') → isolate (curigai indeks) → fix (ubah ke 0) → verify (jalankan lagi).

📝 Sekarang giliranmu

Fungsi ambilTerakhir mengembalikan undefined. Perbaiki bug off-by-one-nya (indeks array dimulai dari 0), lalu tampilkan hasilnya.

Preview