Hidup penuh keputusan: kalo hujan, bawa payung. Kalo lapar, makan. Kalo nilai >= 75, lulus. Otak kita kerja pake aturan if-else terus-menerus tanpa sadar. Komputer juga butuh aturan ini buat ngambil keputusan. Kondisi di JavaScript pake if, else if, else — sama persis kayak cara otak mikir. Tanpa kondisi, program cuma bisa jalan satu jalur kayak kereta yang gak bisa belok.
💡 Operator perbandingan = jebakan klasik.
=itu assign nilai (x = 5),==compare loose (auto-konversi tipe — bisa weird),===compare strict (recommended 99% kasus). Pakai===selalu, kecuali kamu betul-betul tau alasan pakai==. Aturan emas yang nyelametin ribuan jam debugging.
if (nilai >= 75) {
console.log("Lulus!");
} else {
console.log("Belum lulus.");
}
Operator perbandingan:
===sama dengan (tipe dan nilai)!==tidak sama dengan>lebih besar,<lebih kecil>=lebih besar atau sama,<=lebih kecil atau sama
🎭 Analogi sehari-hari
Bayangin lagi nyetir sampai di perempatan lampu merah. Otak kamu otomatis kerja kayak gini: "Kalo hijau, terus aja" (if). "Kalo merah, injak rem" (else). "Kalo kuning, mulai ngerem pelan-pelan" (else if). JavaScript juga gitu — dia baca tiap kondisi urut dari atas ke bawah, pas nemu yang cocok pertama langsung jalan, sisanya di-skip. Persis kayak kamu yang gak mungkin sekalian nginjak gas DAN rem barengan di satu lampu yang sama.
⚠️ Jebakan yang sering ditemui
=vs==vs===— paling sering ketukar.=assign nilai,==compare loose (auto-convert),===compare strict. Pakai===99% kasus.if (x = 5)selalu true — assignment, bukan compare. Bug klasik. Pakaiif (x === 5).- Truthy/falsy bingung —
if ("0")jalan (string "0" truthy!),if (0)tidak jalan.if ([])jalan (array kosong truthy). else ifpanjang = bau code. Pakaiswitchatau lookup table (object) untuk banyak case.- Operator pendek
&&||sering dipakai untuk default:nama || "Anonim". Tapi0 || "default"return "default" — pakai??(nullish coalescing) kalau cuma mau cek null/undefined.
🎯
if/elsevsswitchvs ternary vs lookup object — pilih yang mana?
- 2 cabang sederhana (true/false, ya/tidak) → ternary
cond ? a : b(lebih ringkas)- 2-3 cabang dengan logika kompleks →
if/else if- Banyak cabang dengan VALUE EXACT match (status code, hari minggu) →
switchatau lookup object (const map = { 200: ..., 404: ... })- Range angka / kondisi kompleks (nilai >= 90, < 70) →
if/else if(switch gak bisa range)- Default value untuk variabel → ternary atau
??/||operatorAturan modern: lookup object (
const grade = { 90: "A", 80: "B" }) sering lebih clean dari switch panjang. Ternary cocok untuk inline (JSX render{loggedIn ? <Profile /> : <Login />}).
TL;DR: Kondisi = if/else if/else buat ambil keputusan. Operator: === strict equal (PAKAI INI), == loose (auto-konversi tipe — hindari), = assign (bukan compare). if (x = 5) = bug klasik (assignment, selalu true). 2 cabang → ternary a ? b : c. Banyak cabang exact match → switch atau lookup object. Default value: ?? (null/undefined saja) lebih aman dari || (semua falsy). Pakai === 99% kasus.