Error Corner BAB 2
Tujuan Pembelajaran
Section titled “Tujuan Pembelajaran”Setelah halaman ini, kamu dapat mengenali penyebab error umum operator dan percabangan, lalu memperbaikinya dengan tepat.
Pendahuluan
Section titled “Pendahuluan”Error operator dan percabangan sering tidak menghasilkan pesan merah dari TypeScript. Kode berjalan, tetapi outputnya salah. Ini disebut logic error — kesalahan yang paling susah ditemukan.
Halaman ini membahas kesalahan umum, mengapa terjadi, dan cara memperbaikinya.
Error 1 — = untuk Perbandingan
Section titled “Error 1 — = untuk Perbandingan”Kode yang Salah
Section titled “Kode yang Salah”let nilai: number = 80
if (nilai = 75) { console.log("Lulus")}Mengapa Terjadi?
Section titled “Mengapa Terjadi?”nilai = 75 bukan perbandingan. Ini mengisi nilai 75 ke variabel, lalu kondisinya dievaluasi. Angka bukan nol dianggap truthy, sehingga blok if selalu jalan.
Cara Memperbaiki
Section titled “Cara Memperbaiki”if (nilai >= 75) { console.log("Lulus")}Error 2 — Lupa break di switch
Section titled “Error 2 — Lupa break di switch”Kode yang Salah
Section titled “Kode yang Salah”const hari = "Senin"let pesan: string
switch (hari) { case "Senin": pesan = "Upacara" case "Selasa": pesan = "Pelajaran biasa" break}console.log(pesan)Output yang Tak Diharapkan
Section titled “Output yang Tak Diharapkan”Pelajaran biasaMengapa Terjadi?
Section titled “Mengapa Terjadi?”Tanpa break, setelah case Senin cocok, program melanjutkan ke case Selasa. Nilai pesan diganti.
Cara Memperbaiki
Section titled “Cara Memperbaiki”case "Senin": pesan = "Upacara" breakcase "Selasa": pesan = "Pelajaran biasa" breakError 3 — Titik Koma Setelah if
Section titled “Error 3 — Titik Koma Setelah if”Kode yang Salah
Section titled “Kode yang Salah”const nilai: number = 80
if (nilai >= 75);{ console.log("Lulus")}Output yang Tak Diharapkan
Section titled “Output yang Tak Diharapkan”LulusBlok console.log berjalan bahkan jika nilai di bawah 75.
Mengapa Terjadi?
Section titled “Mengapa Terjadi?”Titik koma setelah if (...) mengakhiri pernyataan if. Blok {} setelahnya berdiri sendiri dan selalu dijalankan.
Cara Memperbaiki
Section titled “Cara Memperbaiki”if (nilai >= 75) { console.log("Lulus")}Error 4 — Urutan else if Salah
Section titled “Error 4 — Urutan else if Salah”Kode yang Salah
Section titled “Kode yang Salah”const nilai: number = 82
if (nilai >= 60) { console.log("Cukup")} else if (nilai >= 75) { console.log("Baik")}Output
Section titled “Output”CukupKategori Baik tidak pernah muncul.
Mengapa Terjadi?
Section titled “Mengapa Terjadi?”Nilai 82 memenuhi >= 60 lebih dulu. Cabang berikutnya tidak pernah diperiksa.
Cara Memperbaiki
Section titled “Cara Memperbaiki”Urutkan dari batas tertinggi ke terendah:
if (nilai >= 75) { console.log("Baik")} else if (nilai >= 60) { console.log("Cukup")}Error 5 — == Bukan ===
Section titled “Error 5 — == Bukan ===”Kode yang Salah
Section titled “Kode yang Salah”const input = "75"if (input == 75) { console.log("Nilai tepat")}Mengapa Terjadi?
Section titled “Mengapa Terjadi?”== melakukan konversi tipe otomatis, sehingga "75" == 75 dianggap true. Ini bisa menimbulkan hasil tak terduga di program yang lebih besar.
Cara Memperbaiki
Section titled “Cara Memperbaiki”if (input === "75") { console.log("Nilai tepat sebagai teks")}Error 6 — Kondisi Logika Terbalik
Section titled “Error 6 — Kondisi Logika Terbalik”Kode yang Salah
Section titled “Kode yang Salah”const lulus: boolean = falseif (!lulus === true) { console.log("Lulus")}Mengapa Terjadi?
Section titled “Mengapa Terjadi?”!lulus sudah menghasilkan true. Membandingkan true === true adalah redundan dan bisa membingungkan.
Cara Memperbaiki
Section titled “Cara Memperbaiki”if (!lulus) { console.log("Tidak lulus")}Error 7 — Prioritas Operator Salah
Section titled “Error 7 — Prioritas Operator Salah”Kode yang Salah
Section titled “Kode yang Salah”const total = 80 + 90 + 70 / 3console.log(total) // 193.33...Mengapa Terjadi?
Section titled “Mengapa Terjadi?”Hanya 70 yang dibagi 3. Operator / punya prioritas lebih tinggi dari +.
Cara Memperbaiki
Section titled “Cara Memperbaiki”const total = (80 + 90 + 70) / 3console.log(total) // 80Error 8 — Ternary Tidak Lengkap
Section titled “Error 8 — Ternary Tidak Lengkap”Kode yang Salah
Section titled “Kode yang Salah”const status = nilai >= 75 ? "Lulus"Mengapa Terjadi?
Section titled “Mengapa Terjadi?”Ternary wajib memiliki bagian setelah : untuk kondisi false.
Cara Memperbaiki
Section titled “Cara Memperbaiki”const status = nilai >= 75 ? "Lulus" : "Remedial"Strategi Debug Operator dan Percabangan
Section titled “Strategi Debug Operator dan Percabangan”- Tambahkan
console.log(kondisi)untuk memeriksa nilai boolean di dalamif. - Periksa apakah kamu memakai
===atau>=dengan benar. - Periksa prioritas operator — tambahkan kurung jika ada keraguan.
- Periksa semua
breakdiswitch. - Ubah nilai data dan lihat apakah hasilnya berubah seperti yang diharapkan.
Latihan
Section titled “Latihan”Buat src/bab2/latihan-error.ts. Salin kode berikut dan perbaiki semua kesalahannya:
const nilai: number = 82
if (nilai = 75) { console.log("Lulus")}
const kategori = nilai >= 60 ? "Cukup"
const hariIni = "Senin"let jadwal: stringswitch (hariIni) { case "Senin": jadwal = "Upacara" case "Rabu": jadwal = "Praktik" break default: jadwal = "Umum"}console.log(jadwal)Ringkasan
Section titled “Ringkasan”=mengisi nilai;===membandingkan nilai.- Tambahkan
breakdi setiapcaseswitch. - Jangan letakkan titik koma setelah
if (...). - Urutkan
else ifdari batas tertinggi ke terendah. - Gunakan
===bukan==agar perbandingan ketat.