Looping (pengulangan) adalah salah satu konsep paling penting dalam pemrograman. Dengan loop, JavaScript dapat menjalankan suatu blok kode berulang kali tanpa harus menuliskannya berkali-kali.
Dalam bab ini, kita membahas seluruh jenis loop fundamental dan modern dalam JavaScript, berikut praktik terbaik dan cara menghindari loop tak berujung (infinite loop).
Contents
1. Loop for — Pengulangan Terstruktur
for adalah loop paling umum dan sangat fleksibel.
Struktur dasar:
for (inisialisasi; kondisi; perubahan) {
// kode berulang
}
Contoh:
for (let i = 0; i < 5; i++) {
console.log("Iterasi ke-", i);
}
Bagian penting:
- inisialisasi → dijalankan sekali di awal
- kondisi → dicek setiap iterasi
- perubahan → dijalankan setiap kali loop selesai 1 putaran
Loop for biasanya dipakai ketika kita tahu jumlah iterasi yang pasti.
2. Loop while & do...while
A. while loop
Digunakan jika kondisi dicek sebelum menjalankan isi loop.
Struktur:
while (kondisi) {
// kode akan berjalan selama kondisi true
}
Contoh:
let count = 1;
while (count <= 3) {
console.log("Hitung:", count);
count++;
}
B. do...while loop
Di sini, isi loop selalu dijalankan minimal sekali, lalu kondisi dicek setelahnya.
Struktur:
do {
// minimal dijalankan sekali
} while (kondisi);
Contoh:
let angka = 0;
do {
console.log("Nilai:", angka);
angka++;
} while (angka < 3);
3. Loop for...of — Untuk Array & Iterable
for...of diperkenalkan di ES6 dan merupakan cara paling mudah untuk membaca isi array.
Contoh penggunaan pada array:
const fruits = ["apple", "banana", "mango"];
for (const item of fruits) {
console.log(item);
}
Bekerja pada tipe iterable lainnya:
- string
- Map
- Set
- NodeList (DOM)
Contoh pada string:
for (const char of "JS") {
console.log(char);
}
for...of tidak cocok untuk objek biasa (non-iterable).
4. Loop for...in — Untuk Objek
Berbeda dengan for...of, loop for...in digunakan untuk mengiterasi property dalam objek.
Contoh:
const user = {
name: "Andi",
age: 20,
city: "Bandung"
};
for (const key in user) {
console.log(key, ":", user[key]);
}
Kegunaan:
- menampilkan property objek
- mengecek key tertentu
Catatan penting:
- Urutan tidak selalu terjamin
- Termasuk property yang inherited (kecuali pakai
hasOwnProperty)
5. break dan continue
A. break — Menghentikan loop sepenuhnya
for (let i = 1; i <= 10; i++) {
if (i === 5) break;
console.log(i);
}
// output: 1 2 3 4
B. continue — Lewati iterasi saat ini
for (let i = 1; i <= 5; i++) {
if (i === 3) continue;
console.log(i);
}
// output: 1 2 4 5
6. Infinite Loop & Cara Menghindarinya
Loop tak berujung (infinite loop) terjadi ketika kondisi loop tidak pernah menjadi false.
Contoh infinite loop (berbahaya!)
while (true) {
console.log("Tidak akan berhenti!");
}
Atau:
for (let i = 0; i < 5; ) {
console.log(i);
// i tidak berubah → loop selamanya
}
Cara Menghindari Infinite Loop
✔ Pastikan nilai kontrol berubah
Jika menggunakan i++, pastikan letaknya tepat.
✔ Gunakan kondisi yang jelas & dapat dicapai
while (x > 0) x--;
✔ Hindari perubahan variabel kontrol di dalam kondisi yang membingungkan
✔ Gunakan debugging (console.log) untuk melihat perubahan variabel
✔ Bagi kasus kompleks, gunakan break sebagai pengaman
Kapan Harus Menggunakan Loop Tertentu?
| Jenis Loop | Kapan digunakan |
|---|---|
for |
jumlah iterasi jelas |
while |
jumlah iterasi tidak pasti |
do...while |
perlu dijalankan minimal sekali |
for...of |
membaca array & iterable |
for...in |
iterasi property objek |
break |
keluar dari loop |
continue |
skip iterasi tertentu |