1882 kata
9 menit

Belajar Perulangan JavaScript: for, while, dan do...while

Halo, Gabuters!

Pada artikel sebelumnya, kita belajar percabangan JavaScript menggunakan if, else, dan switch.

Dengan percabangan, program bisa mengambil keputusan berdasarkan kondisi tertentu.

Sekarang bayangkan kita ingin menampilkan daftar nomor artikel dari 1 sampai 10.

Cara paling sederhana mungkin seperti ini:

console.log(1);
console.log(2);
console.log(3);
console.log(4);
console.log(5);

Baru lima angka saja sudah lumayan panjang.

Bagaimana kalau kita ingin menampilkan angka 1 sampai 100? Atau bahkan 1 sampai 1.000?

Tentu kurang praktis jika harus menulis instruksi yang sama berulang kali.

Untuk menyelesaikan masalah tersebut, JavaScript menyediakan perulangan atau loop.

Pada artikel ini, kita akan belajar menjalankan instruksi secara berulang menggunakan for, while, dan do...while.

Kita juga akan mengenal break, continue, serta pengantar for...of.

1. Apa Itu Perulangan?#

Perulangan adalah struktur kontrol yang memungkinkan program menjalankan suatu blok kode berulang kali.

Pengulangan tersebut bisa dilakukan berdasarkan jumlah tertentu atau selama sebuah kondisi masih terpenuhi.

Misalnya, kita ingin menampilkan angka 1 sampai 5.

Daripada menulis lima instruksi console.log(), kita bisa menggunakan:

for (let nomor = 1; nomor <= 5; nomor++) {
console.log(nomor);
}

Hasilnya:

1
2
3
4
5

Hanya dengan beberapa baris kode, kita bisa menghasilkan lima keluaran.

Kalau ingin menampilkan angka sampai 100, kita cukup mengubah batas perulangannya.

Namun, sebelum mencoba berbagai jenis loop, kita perlu memahami konsep dasarnya.

2. Mengenal Iterasi dan Kondisi Berhenti#

Satu kali pelaksanaan blok kode dalam perulangan disebut iterasi.

Jika sebuah loop menjalankan blok kode sebanyak lima kali, berarti terjadi lima iterasi.

Dalam banyak perulangan, ada tiga hal penting:

  1. Nilai awal.
  2. Kondisi yang menentukan apakah perulangan dilanjutkan.
  3. Perubahan nilai agar perulangan dapat mencapai kondisi berhenti.

Perhatikan:

for (let angka = 1; angka <= 3; angka++) {
console.log(angka);
}

Alurnya:

IterasiNilai angkaKondisi angka <= 3Tindakan
11trueCetak 1
22trueCetak 2
33trueCetak 3
Berikutnya4falseBerhenti

Perulangan berhenti ketika kondisinya tidak lagi terpenuhi.

Memahami kondisi berhenti sangat penting agar kita tidak membuat program yang terus berulang tanpa sengaja.

3. Perulangan for#

Perulangan for sering digunakan ketika kita mengetahui pola jumlah pengulangan yang dibutuhkan.

Strukturnya:

for (nilaiAwal; kondisi; perubahan) {
// Kode yang dijalankan berulang
}

Contohnya:

for (let i = 1; i <= 5; i++) {
console.log(`Perulangan ke-${i}`);
}

Hasilnya:

Perulangan ke-1
Perulangan ke-2
Perulangan ke-3
Perulangan ke-4
Perulangan ke-5

Mari kita bedah.

Nilai awal#

let i = 1

Variabel i dimulai dari angka 1.

Huruf i sering digunakan sebagai nama penghitung iterasi, tetapi bukan aturan wajib.

Kita bisa menggunakan nama yang lebih jelas.

for (let nomorArtikel = 1; nomorArtikel <= 5; nomorArtikel++) {
console.log(nomorArtikel);
}

Kondisi#

i <= 5

Selama kondisi tersebut bernilai true, perulangan dapat dilanjutkan.

Ketika i menjadi 6, kondisinya bernilai false dan loop berhenti.

Perubahan nilai#

i++

Operator ++ menambahkan nilai variabel sebanyak satu.

Dalam konteks contoh ini:

i++

Memiliki efek penambahan yang sama dengan:

i = i + 1;

Perubahan nilai dilakukan setelah blok kode pada iterasi tersebut selesai dijalankan secara normal.

4. Membuat Perulangan Mundur#

Perulangan tidak harus selalu bergerak dari angka kecil ke angka besar.

Kita juga bisa membuat hitung mundur.

Contohnya:

for (let angka = 5; angka >= 1; angka--) {
console.log(angka);
}

Hasilnya:

5
4
3
2
1

Operator -- digunakan untuk mengurangi nilai sebanyak satu.

Perhatikan perbedaan kondisinya.

Untuk menghitung naik, kita menggunakan:

angka <= 5

Sedangkan untuk menghitung mundur, kita menggunakan:

angka >= 1

Arah perubahan nilai harus sesuai dengan kondisi berhentinya.

5. Mengatur Langkah Perulangan#

Kita tidak harus menambah atau mengurangi nilai satu per satu.

Misalnya, kita ingin menampilkan bilangan genap dari 2 sampai 10.

for (let angka = 2; angka <= 10; angka += 2) {
console.log(angka);
}

Hasilnya:

2
4
6
8
10

Pada contoh ini:

angka += 2

Berarti nilai angka ditambah 2 setiap selesai menjalankan satu iterasi.

Kita juga bisa membuat pola lain, seperti kelipatan 5.

for (let angka = 5; angka <= 25; angka += 5) {
console.log(angka);
}

Hasilnya:

5
10
15
20
25

6. Perulangan while#

Selain for, JavaScript menyediakan while.

Perulangan while menjalankan blok kode selama kondisinya bernilai truthy.

Strukturnya:

while (kondisi) {
// Kode yang dijalankan berulang
}

Contohnya:

let angka = 1;
while (angka <= 5) {
console.log(angka);
angka++;
}

Hasilnya:

1
2
3
4
5

Perhatikan bahwa pada while, nilai awal dan perubahan nilai biasanya ditulis terpisah dari pernyataan loop.

Nilai awal:

let angka = 1;

Kondisi:

while (angka <= 5)

Perubahan nilai:

angka++;

Kapan menggunakan while?#

while cocok ketika pengulangan bergantung pada kondisi yang perlu terus diperiksa dan jumlah iterasinya belum tentu diketahui sejak awal.

Misalnya, kita ingin memproses antrian selama masih ada pekerjaan.

Untuk contoh sederhana, kita bisa mensimulasikan jumlah antrian.

let jumlahAntrian = 3;
while (jumlahAntrian > 0) {
console.log(`Memproses antrian. Sisa: ${jumlahAntrian}`);
jumlahAntrian--;
}
console.log("Semua antrian selesai.");

Hasilnya:

Memproses antrian. Sisa: 3
Memproses antrian. Sisa: 2
Memproses antrian. Sisa: 1
Semua antrian selesai.

Setiap iterasi mengurangi jumlah antrian.

Ketika nilainya mencapai 0, kondisi jumlahAntrian > 0 tidak lagi terpenuhi.

Perulangan pun berhenti.

7. Perulangan do…while#

Jenis berikutnya adalah do...while.

Perbedaannya dengan while terletak pada kapan kondisi diperiksa.

Pada while, kondisi diperiksa sebelum blok kode dijalankan.

Pada do...while, blok kode dijalankan terlebih dahulu, kemudian kondisinya diperiksa.

Strukturnya:

do {
// Kode yang dijalankan
} while (kondisi);

Contohnya:

let angka = 1;
do {
console.log(angka);
angka++;
} while (angka <= 5);

Hasilnya:

1
2
3
4
5

Sekilas hasilnya sama dengan while.

Tetapi coba perhatikan contoh berikut.

Perbedaan while dan do…while#

Menggunakan while:

let angka = 10;
while (angka <= 5) {
console.log(angka);
angka++;
}

Tidak ada keluaran karena kondisi sudah bernilai false sejak awal.

Sekarang menggunakan do...while:

let angka = 10;
do {
console.log(angka);
angka++;
} while (angka <= 5);

Hasilnya:

10

Walaupun kondisi akhirnya bernilai false, blok kode tetap dijalankan satu kali.

Jadi, do…while selalu menjalankan blok kode minimal satu kali, selama eksekusi berhasil mencapai blok tersebut.

8. Kapan Menggunakan for, while, dan do…while?#

Ketiganya dapat digunakan untuk melakukan pengulangan.

Perbedaannya lebih berkaitan dengan kebutuhan dan keterbacaan kode.

JenisCocok Digunakan Ketika
forMemiliki pola penghitung atau jumlah iterasi yang jelas
whilePengulangan bergantung pada kondisi yang diperiksa sebelum eksekusi
do...whileBlok kode perlu dijalankan setidaknya sekali sebelum kondisi diperiksa

Misalnya, untuk menampilkan angka 1 sampai 100, for biasanya lebih ringkas.

Untuk memproses pekerjaan selama antrian masih tersedia, while bisa terasa lebih alami.

Untuk menjalankan sebuah tindakan sebelum memutuskan apakah perlu mengulanginya, do...while bisa menjadi pilihan.

Tidak perlu memaksakan satu jenis loop untuk semua kebutuhan.

Pilih yang paling jelas menggambarkan alur program.

9. Menghentikan Perulangan dengan break#

Terkadang kita ingin menghentikan perulangan sebelum kondisi normalnya berakhir.

JavaScript menyediakan break.

Contohnya:

for (let angka = 1; angka <= 10; angka++) {
if (angka === 6) {
break;
}
console.log(angka);
}

Hasilnya:

1
2
3
4
5

Perulangan berhenti ketika angka bernilai 6.

Kenapa angka 6 tidak ditampilkan?

Karena pemeriksaan if dilakukan sebelum console.log().

Saat kondisi angka === 6 terpenuhi, break langsung menghentikan loop.

Contoh penggunaan break#

Bayangkan kita sedang mencari nomor artikel tertentu.

const nomorDicari = 4;
for (let nomor = 1; nomor <= 10; nomor++) {
if (nomor === nomorDicari) {
console.log(`Artikel nomor ${nomor} ditemukan.`);
break;
}
}

Hasilnya:

Artikel nomor 4 ditemukan.

Setelah nomor ditemukan, tidak ada alasan untuk melanjutkan pencarian dalam contoh ini.

Karena itu, kita menghentikan perulangan menggunakan break.

10. Melewati Iterasi dengan continue#

Berbeda dari break, continue tidak menghentikan seluruh perulangan.

continue digunakan untuk melewati sisa instruksi pada iterasi saat ini, lalu melanjutkan proses loop sesuai aturannya.

Contohnya:

for (let angka = 1; angka <= 5; angka++) {
if (angka === 3) {
continue;
}
console.log(angka);
}

Hasilnya:

1
2
4
5

Angka 3 dilewati, tetapi loop tetap berjalan sampai selesai.

Contoh penggunaan continue#

Misalnya, kita ingin menampilkan nomor artikel kecuali nomor 4 karena sedang tidak tersedia.

for (let nomor = 1; nomor <= 6; nomor++) {
if (nomor === 4) {
continue;
}
console.log(`Menampilkan artikel nomor ${nomor}`);
}

Hasilnya:

Menampilkan artikel nomor 1
Menampilkan artikel nomor 2
Menampilkan artikel nomor 3
Menampilkan artikel nomor 5
Menampilkan artikel nomor 6

Ingat perbedaannya:

  • break menghentikan loop.
  • continue melewati sisa instruksi pada iterasi saat ini.

11. Hati-Hati dengan Infinite Loop#

Salah satu kesalahan yang cukup sering terjadi ketika belajar perulangan adalah membuat infinite loop.

Infinite loop merupakan perulangan yang tidak mencapai kondisi berhenti.

Contohnya:

let angka = 1;
while (angka <= 5) {
console.log(angka);
}

Apa masalahnya?

Nilai angka tidak pernah berubah.

Akibatnya, kondisi angka <= 5 terus bernilai true.

Kode tersebut dapat terus berjalan dan membuat halaman browser tidak responsif.

Jangan menjalankan contoh tersebut tanpa pengaman.

Jika browser terlanjur tidak responsif akibat loop yang tidak berhenti, hentikan eksekusi melalui Developer Tools jika memungkinkan atau tutup tab yang bermasalah.

Cara memperbaikinya#

Pastikan ada perubahan nilai yang membuat kondisi berhenti dapat tercapai.

let angka = 1;
while (angka <= 5) {
console.log(angka);
angka++;
}

Sekarang loop berhenti ketika angka menjadi 6.

Namun, tidak semua infinite loop disebabkan oleh lupa menambah angka.

Kondisi yang salah atau perubahan nilai yang bergerak menjauhi kondisi berhenti juga bisa menyebabkan masalah.

Karena itu, selalu periksa alur loop sebelum menjalankannya.

12. Mengenal for…of#

JavaScript juga menyediakan for...of.

Berbeda dari contoh for sebelumnya yang menggunakan penghitung angka, for...of digunakan untuk mengambil nilai dari sebuah iterable, seperti array atau string.

Contohnya:

const kategori = ["HTML", "CSS", "JavaScript"];
for (const namaKategori of kategori) {
console.log(namaKategori);
}

Hasilnya:

HTML
CSS
JavaScript

Pada setiap iterasi, variabel namaKategori menerima satu nilai dari array.

Kita juga bisa menggunakan for...of pada string.

const teks = "WEB";
for (const huruf of teks) {
console.log(huruf);
}

Hasilnya:

W
E
B

Untuk sekarang, kita hanya perlu mengenal cara kerja dasarnya.

Array dan berbagai metode pengolahannya akan dibahas lebih lengkap pada JavaScript #6.

13. Praktik: Menampilkan Daftar Artikel#

Sekarang kita buat contoh sederhana untuk website BapakGabut.

Misalnya, kita ingin menampilkan lima nomor artikel.

const jumlahArtikel = 5;
console.log("Daftar Artikel BapakGabut");
for (let nomor = 1; nomor <= jumlahArtikel; nomor++) {
console.log(`Artikel #${nomor}`);
}

Hasilnya:

Daftar Artikel BapakGabut
Artikel #1
Artikel #2
Artikel #3
Artikel #4
Artikel #5

Selanjutnya, kita ingin memberikan penanda untuk artikel yang masih draft.

Misalnya, artikel nomor 3 belum diterbitkan.

const jumlahArtikel = 5;
const nomorDraft = 3;
for (let nomor = 1; nomor <= jumlahArtikel; nomor++) {
if (nomor === nomorDraft) {
console.log(`Artikel #${nomor}: Draft`);
} else {
console.log(`Artikel #${nomor}: Published`);
}
}

Hasilnya:

Artikel #1: Published
Artikel #2: Published
Artikel #3: Draft
Artikel #4: Published
Artikel #5: Published

Sekarang coba ubah kebutuhannya.

Kita hanya ingin menampilkan artikel yang sudah diterbitkan.

Gunakan continue.

const jumlahArtikel = 5;
const nomorDraft = 3;
for (let nomor = 1; nomor <= jumlahArtikel; nomor++) {
if (nomor === nomorDraft) {
continue;
}
console.log(`Menampilkan artikel #${nomor}`);
}

Hasilnya:

Menampilkan artikel #1
Menampilkan artikel #2
Menampilkan artikel #4
Menampilkan artikel #5

Dari latihan ini, kita sudah menggabungkan perulangan, percabangan, operator perbandingan, dan template literal.

Semua konsep tersebut akan sering digunakan ketika kita mulai mengolah kumpulan data.

14. Kesalahan Umum Saat Menggunakan Perulangan#

Salah menentukan batas perulangan#

Perhatikan:

for (let angka = 1; angka < 5; angka++) {
console.log(angka);
}

Hasilnya:

1
2
3
4

Angka 5 tidak ditampilkan karena kondisi menggunakan <, bukan <=.

Perbedaan kecil seperti ini dapat menyebabkan kesalahan yang dikenal sebagai off-by-one error.

Lupa memperbarui kondisi pada while#

let angka = 1;
while (angka <= 5) {
console.log(angka);
}

Contoh tersebut tidak memiliki perubahan nilai sehingga loop tidak berhenti.

Jangan menjalankannya tanpa pengaman.

Salah memahami continue#

continue tidak selalu langsung kembali ke pemeriksaan kondisi tanpa langkah lain.

Pada loop for, ekspresi pembaruan tetap dijalankan setelah continue, kemudian kondisi diperiksa kembali.

Pada while, kita perlu lebih berhati-hati karena perubahan nilai yang ditempatkan setelah continue bisa terlewati.

Menggunakan loop ketika tidak diperlukan#

Tidak semua masalah membutuhkan perulangan.

Jika kita hanya ingin menampilkan satu pesan, cukup gunakan console.log().

Gunakan loop ketika memang ada pekerjaan yang perlu dilakukan secara berulang.

15. Latihan Mandiri#

Sekarang giliran Gabuters mencoba.

Latihan 1: Angka 1 sampai 20#

Gunakan for untuk menampilkan angka 1 sampai 20.

Kemudian ubah agar hanya menampilkan bilangan genap.

Latihan 2: Hitung mundur#

Gunakan while untuk menampilkan angka 10 sampai 1.

Setelah selesai, tampilkan pesan:

Hitung mundur selesai!

Latihan 3: Lewati artikel draft#

Buat program untuk menampilkan nomor artikel 1 sampai 10.

Anggap artikel nomor 4 dan 7 masih draft.

Gunakan continue agar kedua nomor tersebut tidak ditampilkan.

Latihan 4: Cari nomor artikel#

Buat program yang mencari nomor artikel 8 dari angka 1 sampai 20.

Ketika ditemukan, tampilkan:

Artikel nomor 8 ditemukan!

Kemudian hentikan perulangan menggunakan break.

Tantangan tambahan#

Gunakan for...of untuk menampilkan daftar kategori berikut:

const kategori = [
"HTML",
"CSS",
"JavaScript",
"Backend",
"Database"
];

Coba tambahkan nomor urut menggunakan variabel penghitung.

16. Penutup#

Pada artikel ini, kita sudah mempelajari konsep perulangan atau iterasi dalam JavaScript.

Kita mengenal for, while, dan do...while, memahami kondisi berhenti, serta menggunakan break dan continue untuk mengatur alur perulangan.

Kita juga mencoba for...of untuk mengambil nilai dari array dan string.

Dengan perulangan, kita tidak perlu menulis instruksi yang sama berkali-kali.

Tetapi sekarang muncul tantangan baru.

Bagaimana kalau ada sekumpulan instruksi yang ingin kita gunakan di beberapa bagian program, dengan input yang berbeda-beda?

Apakah kita harus menyalin kode tersebut setiap kali dibutuhkan?

Pada artikel berikutnya, kita akan membahas Function JavaScript: Membuat Kode Lebih Rapi dan Bisa Digunakan Ulang.

Kita akan belajar membuat function, menggunakan parameter, mengembalikan nilai dengan return, dan mengenal arrow function.

Sampai jumpa di artikel berikutnya, Gabuters!

JavaScript

Selesai

Bagian 4 dari 8Tulisan ini bagian dari seri

Bagikan Artikel

Buat poster berbagi atau salin tautan artikel ini.

Lanjut membaca

Bacaan terkait

Berdasarkan tag dan kategori yang sama

Coba jalur lain

Pilihan konsisten dari artikel lain