Perulangan — JavaScript

Coba kamu disuruh print "Halo" 1000 kali. Nulis manual console.log("Halo") 1000 kali? Gila. Solusi: loop — perintah komputer "ulangi blok kode ini sampai…

Coba kamu disuruh print "Halo" 1000 kali. Nulis manual console.log("Halo") 1000 kali? Gila. Solusi: loop — perintah komputer "ulangi blok kode ini sampai kondisi terpenuhi." Jadi 4 baris kode aja yang ngerjain 1000 iterasi. Loop adalah salah satu hal paling powerful dalam programming — semua yang berulang (filter list, kirim email ke 100 user, kalkulasi total cart) dasarnya loop.

🤔 Hati-hati infinite loop. Lupa update counter di while loop = loop jalan selamanya = browser freeze. while (i < 5) { console.log(i); } (tanpa i++) bakal hang halaman. Tip safety: tulis kondisi berhenti DULU sebelum loop body — paksa otak mikirin "kapan loop ini stop?".

For loop:

for (let i = 0; i < 5; i++) {
  console.log(i);
}

While loop:

let i = 0;
while (i < 5) {
  console.log(i);
  i++;
}

Gunakan for jika kamu tahu berapa kali ingin mengulang. Gunakan while jika tergantung kondisi.

🎭 Analogi sehari-hari

Loop = robot pelipat baju di laundry:

Robot tidak capek — mau 100 atau 10.000 baju, dia jalan tanpa keluhan, asal kondisi berhenti jelas.

⚠️ Jebakan yang sering ditemui

🎯 for vs for...of vs forEach vs while — pilih yang mana?

  • Iterasi array dengan butuh INDEXfor (let i = 0; i < arr.length; i++) atau arr.forEach((item, i) => ...)
  • Iterasi array biasa, gak butuh indexfor (const item of arr) (clean) atau arr.forEach
  • Mau pakai break/continuefor...of atau for (forEach gak support)
  • Iterasi keys objectfor (const key in obj) atau Object.keys(obj).forEach(...)
  • Loop sampai kondisi tertentu (cari sesuatu) → while atau for + break
  • Transform/filter arrayarr.map/arr.filter/arr.reduce (BUKAN loop manual)

Aturan modern: for...of clean buat iterasi sederhana. forEach cocok pas chain dari array methods. for classic kalau butuh index control. while jarang dipakai kecuali kondisi non-counter (e.g., parser).

TL;DR: Loop = ulangi blok kode. for (counter klasik), for...of (iterasi array/iterable, clean), for...in (iterasi keys OBJECT — di array kasih index string), while (kondisi non-counter), forEach (chain method). break keluar total, continue skip iterasi ini. Lupa update counter di while = infinite loop = browser freeze. Untuk transform array, pakai map/filter/reduce BUKAN loop manual. Loop di array besar = block UI (single-thread).

Yang akan kamu pelajari