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
- Hasilkan semula — lihat bug itu sendiri, setiap kali. Catat input yang tepat.
- Baca — jenis, mesej dan lokasi error. Baca error pertama dahulu; yang seterusnya selalunya kesan sampingan.
- Buat hipotesis — satu tekaan yang spesifik: "
bestundefined keranastudentsmasih kosong bilarenderberjalan". - Uji tekaan — satu
console.logsebelum baris yang gagal membuktikan atau menolaknya dalam beberapa saat. - Baiki satu perkara, jalankan semula. Mengubah lima perkara serentak tidak memberitahu yang mana satu penting.
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
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 < 49Apa yang dihantar oleh penyemak
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
let students = [];
fetch("students.json")
.then((r) => r.json())
.then((data) => { students = data; });
render(students); // runs NOW, data arrives LATERRender selepas data tiba
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
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.
Output konsol daripada kod anda akan dipaparkan di sini.