Perulangan while dan do-while
Perulangan berbasis kondisi dengan while, plus do-while yang selalu jalan minimal sekali.
while: ulang selama kondisi true
Berbeda dengan for yang menghitung, while mengulang selama kondisinya true. Cocok saat kamu tidak tahu pasti berapa kali harus mengulang.
let nyawa = 3;
while (nyawa > 0) {
console.log("Main! Sisa nyawa: " + nyawa);
nyawa--;
}
console.log("Game over");Analoginya seperti mengisi ember: terus tuang air selama ember belum penuh. Kamu tidak menghitung gayungnya, yang penting kondisi "belum penuh".
Pola umum: menunggu input valid
let password = "";
while (password.length < 8) {
password = password + "a"; // simulasi input
}
console.log("Password diterima");Di aplikasi nyata, pola ini dipakai untuk validasi: ulangi selama input belum memenuhi syarat.
do-while: jalan dulu, cek belakangan
do-while mirip while, tapi kondisinya dicek di akhir. Akibatnya blok kode selalu dijalankan minimal satu kali:
let angka = 10;
do {
console.log("Jalan sekali walau kondisi salah: " + angka);
angka++;
} while (angka < 5);Meski angka < 5 langsung salah, pesan tetap tercetak sekali. Ini cocok untuk menu yang harus tampil minimal sekali sebelum user memilih keluar.
Catatan teknis: Risiko terbesar while adalah lupa mengubah variabel kondisi di dalam loop, yang menyebabkan infinite loop. Kalau browser macet saat eksperimen, itu hampir pasti penyebabnya. Selalu pastikan ada baris yang mengubah kondisi menuju false.
while vs for
Pakai for saat jumlah iterasi sudah jelas (misalnya sepanjang array). Pakai while saat iterasi bergantung pada kondisi yang berubah (misalnya menunggu sesuatu selesai). Keduanya bisa saling menggantikan, pilih yang niatnya paling jelas terbaca.
Studi kasus: undian sampai menang
while bersinar untuk simulasi yang jumlah langkahnya tidak diketahui:
let percobaan = 0;
let menang = false;
while (!menang) {
percobaan++;
let dadu = Math.floor(Math.random() * 6) + 1;
if (dadu === 6) menang = true;
}
console.log("Menang setelah " + percobaan + " lemparan!");Kamu tidak tahu butuh berapa lemparan untuk dapat angka 6, jadi for tidak cocok. while terus jalan sampai kondisi menang terpenuhi. Untuk keamanan di program nyata, tambahkan batas maksimal iterasi agar tidak infinite loop kalau logikanya salah:
while (!menang && percobaan < 1000) { /* ... */ }Batas pengaman seperti ini kebiasaan baik untuk semua while yang kondisinya bergantung pada data dinamis.
Kesimpulan
while untuk kondisi, for untuk hitungan. Tambahkan do-while ke kotak alatmu untuk kasus "tampilkan dulu, tanya belakangan" seperti menu interaktif.