Menu

For Loop JavaScript: Sintaks, Contoh, Break dan Continue

Cara kerja loop for klasik di JavaScript: header tiga bagian, perulangan pada array, break dan continue, loop bersarang, dan jebakan umum.

Halaman ini dilengkapi editor yang bisa dijalankan. Edit, jalankan, dan lihat output-nya seketika.

For Loop Klasik

Saat kamu tahu berapa kali sesuatu ingin diulang, loop for adalah alatnya. Loop ini mengemas tiga bagian perulangan berhitung, yaitu awal, akhir, dan langkah, ke dalam satu baris header.

Lima iterasi, lima baris output. Cara membaca header-nya:

  • let i = 0 berjalan sekali, sebelum loop dimulai. Bagian ini menyiapkan counter.
  • i < 5 dicek sebelum setiap iterasi. Kalau true, isi loop dijalankan. Kalau false, loop berakhir.
  • i++ berjalan setelah setiap iterasi, tepat sebelum kondisinya dicek lagi.

Ketiga bagian dipisahkan dengan titik koma, bukan koma. Ketiganya opsional, tetapi jarang dihilangkan, karena biasanya kamu akan memakai while saja.

Bagaimana Bagian-Bagiannya Bekerja Sama

Menelusuri satu loop secara manual membantu memahami urutannya:

Langkah demi langkah:

  1. let i = 1: counter dibuat dan diisi 1.
  2. Cek i <= 3: true, jadi isi loop dijalankan. Cetak 1.
  3. Jalankan i++: i sekarang 2.
  4. Cek i <= 3: true. Cetak 2.
  5. Jalankan i++: i sekarang 3.
  6. Cek i <= 3: true. Cetak 3.
  7. Jalankan i++: i sekarang 4.
  8. Cek i <= 3: false. Keluar.

Langkah update berjalan setelah isi loop, bukan sebelumnya. Bagian inilah yang sering menjebak orang.

Perulangan pada Array Berdasarkan Index

Tugas paling umum loop for adalah menelusuri array. Counter-nya sekaligus berfungsi sebagai index:

Beberapa hal yang perlu diperhatikan:

  • Index array dimulai dari nol. Elemen pertama ada di index 0, yang terakhir di length - 1.
  • Kondisinya i < fruits.length, bukan i <= fruits.length. Memakai <= akan berjalan satu langkah melewati ujung array dan mencetak undefined.
  • i dideklarasikan dengan let, jadi scope-nya hanya di dalam loop. Di luar loop, variabel itu tidak ada.

Kalau kamu hanya butuh nilainya dan tidak butuh index-nya, for...of lebih singkat dan jelas. Kita akan membahasnya di dokumentasinya sendiri.

break: Berhenti Lebih Awal

break langsung keluar dari loop. Berguna saat kamu sudah menemukan apa yang dicari dan tidak perlu melanjutkan:

Begitu break berjalan, kendali melompat melewati kurung kurawal penutup loop. Langkah update tidak berjalan, kondisinya tidak dicek lagi: loop-nya selesai begitu saja.

continue: Lewati Iterasi Ini

continue melewati sisa iterasi saat ini dan langsung ke langkah update. Loop tetap berjalan; hanya putaran saat ini yang tidak diselesaikan.

Angka genap terkena continue dan melewati console.log. Hanya angka ganjil yang dicetak. continue praktis saat kamu ingin menyaring iterasi tertentu tanpa harus membungkus sisa isi loop di dalam if.

Langkah Selain +1

Langkah update hanyalah sebuah ekspresi. Tidak harus i++. Hitung kelipatan dua:

Hitung mundur:

Telusuri array dari belakang, yang kadang berguna saat kamu menghapus item sambil berjalan:

Apa pun yang kamu pilih, aturannya sama: kondisi dan update harus bekerja sama agar kondisinya akhirnya bernilai false. Kalau tidak, loop-nya berjalan selamanya. for (let i = 0; i < 10; i--) adalah infinite loop, karena i bergerak ke arah yang salah.

For Loop Bersarang

Kamu bisa menaruh loop for di dalam loop lain. Loop dalam berjalan sampai selesai untuk setiap iterasi loop luar.

Sembilan baris output: tiga iterasi luar, masing-masing dengan tiga iterasi dalam. Beri setiap counter nama yang bermakna (row/col, i/j), jangan memakai ulang variabel yang sama.

Satu hal yang perlu diwaspadai: break dan continue hanya memengaruhi loop paling dalam. Keluar dari loop dalam tidak menghentikan loop luar. Kalau kamu butuh itu, pasang sebuah flag dan cek di loop luar, atau pindahkan pekerjaan bersarangnya ke sebuah fungsi lalu return dari sana.

Jebakan Umum

Beberapa hal yang sering menyulitkan pemula:

Error selisih satu (off-by-one). i <= arr.length berjalan satu langkah terlalu jauh; i < arr.length - 1 berhenti satu langkah terlalu cepat. Bentuk standarnya adalah i < arr.length.

Lupa langkah update. Kalau kamu tidak menulis i++ (atau yang setara), counter-nya tidak pernah berubah dan loop-nya berjalan selamanya:

for (let i = 0; i < 10; ) {
    console.log(i); // never ends
}

Memakai var untuk counter. var memiliki scope fungsi, jadi counter-nya bocor keluar dari loop dan bisa menimbulkan kejutan di closure. Tetap pakai let.

Mengubah array sambil melakukan iterasi. Menghapus item akan menggeser index dan kamu akan melewatkan elemen. Kalau perlu menghapus item, lakukan perulangan dari belakang, atau buat array baru dengan filter.

Kapan Memakai Alternatif Lain

Loop for klasik selalu tersedia, tetapi JavaScript punya pilihan yang lebih singkat untuk kasus umum:

  • Melakukan iterasi pada nilai-nilai array: for (const item of array) lebih rapi.
  • Mengubah array: array.map(fn) mengembalikan array baru.
  • Menyaring: array.filter(fn).
  • Menjumlahkan atau meringkas: array.reduce(fn, start).
  • Sekadar melakukan sesuatu untuk setiap elemen: array.forEach(fn).

Pakai for klasik saat kamu benar-benar butuh index-nya, perlu melewati atau berhenti di tengah jalan, atau butuh langkah yang tidak standar seperti hitung mundur atau kelipatan dua.

Berikutnya: While Loop

Loop for unggul saat kamu tahu rentangnya sejak awal. Saat kamu tidak tahu, yaitu saat kamu ingin terus berjalan sampai suatu kondisi berubah, while dan do...while lebih cocok. Itu topik halaman berikutnya.

Pertanyaan yang sering diajukan

Bagaimana sintaks for loop di JavaScript?

Tiga bagian yang dipisahkan titik koma di dalam kurung: for (init; condition; update) { ... }. Bagian init berjalan sekali, kondisi dicek sebelum setiap iterasi, dan update berjalan setelah setiap iterasi. Loop yang umum terlihat seperti for (let i = 0; i < 10; i++) { ... }.

Bagaimana cara melakukan perulangan pada array di JavaScript?

Loop for klasik dengan index bisa dipakai: for (let i = 0; i < arr.length; i++) { console.log(arr[i]); }. Kalau kamu tidak butuh index-nya, for...of lebih rapi: for (const item of arr) { ... }. Untuk mengubah atau menyaring, method array seperti map dan filter biasanya alat yang tepat.

Bagaimana cara kerja break dan continue di dalam for loop?

break langsung keluar dari loop: eksekusi melompat ke kode setelah loop. continue melewati sisa iterasi saat ini dan langsung ke langkah update, lalu mengecek kondisinya lagi. Keduanya hanya memengaruhi loop paling dalam, kecuali kamu memakai label.

Mengapa for loop-ku berjalan terus tanpa henti?

Biasanya karena langkah update tidak pernah menggerakkan kondisi ke arah false. for (let i = 0; i < 10; i--) menghitung mundur selamanya karena i dimulai dari 0 dan hanya makin negatif. Periksa lagi kondisi dan update-nya: keduanya harus bekerja sama agar kondisinya akhirnya bernilai false.

Ilustrasi bahasa pemrograman di Coddy

Belajar coding dengan Coddy

Mulai