Langkau ke kandungan
WANCODE
EN

Debug Kod yang Dijana AI

20 minitPertengahanHTML · CSS · JS

Dalam pelajaran ini

  • Guna kitaran yang boleh diulang: hasilkan semula, baca, buat hipotesis, uji, baiki
  • Baca mesej error dan tahu baris mana yang perlu dilihat dahulu
  • Baiki bug terlebih satu, sempadan, sorting dan susunan async

Idea utama

Debug kod jana AI sama seperti debug kod sendiri — cuma anda tidak membina model mental semasa menulisnya. Jadi bina sekarang: baca bukti, teka satu punca, uji tekaan itu, ubah satu perkara.

Halaman keputusan kelas dalam editor "dijana" daripada prompt yang jelas. Lihat pratonton: jadual kosong, NaN sebagai purata, tiada apa untuk pelajar terbaik — dan satu baris dalam console. Empat bug berbeza bersembunyi di sini, dan hanya satu yang menghasilkan mesej error.

Kitaran debug yang berkesan

  1. Hasilkan semula — lihat bug itu sendiri, setiap kali. Catat input yang tepat.
  2. Baca — jenis, mesej dan lokasi error. Baca error pertama dahulu; yang seterusnya selalunya kesan sampingan.
  3. Buat hipotesis — satu tekaan yang spesifik: "best undefined kerana students masih kosong bila render berjalan".
  4. Uji tekaan — satu console.log sebelum baris yang gagal membuktikan atau menolaknya dalam beberapa saat.
  5. Baiki satu perkara, jalankan semula. Mengubah lima perkara serentak tidak memberitahu yang mana satu penting.
Text
Render failed: TypeError: Cannot read properties of undefined (reading 'name')

Terjemahkan: "sesuatu itu undefined, dan kod cuba membaca .name daripadanya." Cari .name dalam kod — hanya beberapa baris yang layak.

Tiada error tidak bermakna tiada bug

NaN, gred yang salah atau "pelajar terbaik" yang salah tidak pernah menghasilkan error. JavaScript dengan senang hati mengira benda mengarut. Bandingkan output dengan keperluan, bukan dengan "adakah ia crash?".

Empat corak untuk dikenali

Apa yang ditulis pembantu AI

JavaScript
for (let i = 0; i <= scores.length; i++)  // one step too far
if (score > 80) return "A";               // 80 should be an A
scores.sort();                            // sorts as text: 100 < 49

Apa yang dihantar oleh penyemak

JavaScript
for (let i = 0; i < scores.length; i++)
if (score >= 80) return "A";
Math.max(...scores);                      // numeric, doesn't reorder

<= membaca scores[scores.length], iaitu undefined, dan total + undefined ialah NaN. Tanpa compare function, sort() menukar nombor kepada string — dan ia juga menyusun semula array asal.

Bug susunan async

JavaScript
let students = [];
fetch("students.json")
  .then((r) => r.json())
  .then((data) => { students = data; });
render(students); // runs NOW, data arrives LATER

Render selepas data tiba

JavaScript
async function loadAndRender() {
  const response = await fetch("students.json");
  const students = await response.json();
  render(students);
}
loadAndRender();

fetch terus memulangkan promise. Kod pada baris seterusnya berjalan sebelum response wujud. Apa-apa yang perlukan data mesti berjalan selepas data tiba.

Minta bantuan pembantu AI untuk debug

Beri bukti: error yang tepat, kod di sekitar baris itu, apa yang anda jangka, dan apa yang anda sudah tolak. Minta punca yang paling mungkin dan cara mengesahkannya sebelum sebarang pembaikan.

average([80, 90, 70]) sepatutnya 80, tetapi ia memulangkan NaN. Tambah console.log di dalam loop untuk memerhati i dan scores[i], cari langkah tambahan itu, dan baiki loop. Jangan tulis semula function — baiki bug-nya.

Semakan

  • average() memulangkan nombor yang betul

Uji kefahaman

Q1

Console menunjukkan lima error. Yang mana patut dibaca dahulu?

Q2

Apa yang dipulangkan oleh [10, 9, 100].sort() dalam JavaScript?

Q3

Kenapa students kosong bila render(students) berjalan?

Apa yang anda pelajari

  • Hasilkan semula → baca → buat hipotesis → uji tekaan → baiki satu perkara.
  • Baca error pertama dahulu; terjemahkan ke dalam bahasa mudah.
  • Bug senyap (NaN, sempadan salah, sorting teks) memerlukan anda membandingkan output dengan spesifikasi.
  • Apa-apa yang menggunakan data daripada fetch mesti berjalan selepas data tiba.
Pratonton

Output konsol daripada kod anda akan dipaparkan di sini.

Langkah 1 daripada 3