Lakukan while loop dalam javascript mengeksekusi setidaknya sekali?

Jadi, pada latihan 2, meskipun kondisi while salah, ternyata blok tersebut dijalankan. Apakah itu cara loop dirancang? . 2,

loopCondition = salah;

lakukan { konsol. log(“Saya akan berhenti mengulangi karena kondisi saya adalah “ + String(Kondisi loop) + “. ”);
} while (Kondisi loop === true) { console. log(Kondisi loop);};

Dan Anda akan melihat bahwa kondisi loop salah, dan konsolnya. log masih muncul di konsol. Bukankah seharusnya itu melewati while loop dan ke bagian kode berikutnya?

Dalam JavaScript, Anda menggunakan perulangan do-while ketika Anda tidak yakin berapa kali Anda akan mengeksekusi badan perulangan dan badan perulangan perlu mengeksekusi setidaknya sekali (karena kondisi untuk mengakhiri perulangan diuji pada akhir perulangan

Sintaksis

Sintaks untuk do-while loop dalam JavaScript adalah

do {
   // statements
} while (condition);

Parameter atau Argumen

conditionKondisi diuji setiap melewati loop. Jika kondisi bernilai TRUE, badan loop dijalankan. Jika kondisi bernilai FALSE, perulangan diakhiri. pernyataan Pernyataan kode untuk mengeksekusi setiap melewati loop

Catatan

  • Anda akan menggunakan pernyataan do-while loop ketika Anda tidak yakin berapa kali Anda ingin badan loop dieksekusi
  • Karena kondisi while dievaluasi pada akhir perulangan, badan perulangan akan dieksekusi setidaknya sekali
  • Lihat juga pernyataan break untuk keluar dari do-while loop lebih awal
  • Lihat juga pernyataan continue untuk mengulang do-while loop dari awal

Contoh

Mari kita lihat contoh yang menunjukkan cara menggunakan loop do-while di JavaScript

Sebagai contoh

var counter = 1;

do {
   console.log(counter + ' - Inside do-while loop on TechOnTheNet.com');
   counter++;
} while (counter <= 5)

console.log(counter + ' - Done do-while loop on TechOnTheNet.com');
_

Dalam contoh do-while loop ini, loop akan berhenti setelah counter melebihi 5 seperti yang ditentukan oleh

while (counter <= 5)

Perulangan do-while akan berlanjut sedangkan counter 5, perulangan akan berakhir

Misalnya, mengeluarkan barang dari daftar satu demi satu atau hanya menjalankan kode yang sama untuk setiap angka dari 1 sampai 10

Pengulangan adalah cara untuk mengulang kode yang sama berkali-kali

for…of dan for…in loop

Pengumuman kecil untuk pembaca tingkat lanjut

Artikel ini hanya mencakup loop dasar.

let i = 3;
while (i) { // when i becomes 0, the condition becomes falsy, and the loop stops
  alert( i );
  i--;
}
6,
let i = 3;
while (i) { // when i becomes 0, the condition becomes falsy, and the loop stops
  alert( i );
  i--;
}
7 dan
let i = 3;
while (i) { // when i becomes 0, the condition becomes falsy, and the loop stops
  alert( i );
  i--;
}
8

Jika Anda datang ke artikel ini mencari jenis loop lain, berikut petunjuknya

  • Lihat untuk mengulang properti objek
  • Lihat dan iterables untuk mengulang array dan objek yang dapat diubah

Jika tidak, silakan baca terus

Loop

let i = 3;
while (i) { // when i becomes 0, the condition becomes falsy, and the loop stops
  alert( i );
  i--;
}
_6 memiliki sintaks berikut

while (condition) {
  // code
  // so-called "loop body"
}

Sementara

let i = 3;
while (i) alert(i--);
_0 benar,
let i = 3;
while (i) alert(i--);
1 dari badan loop dieksekusi

Misalnya, loop di bawah menghasilkan

let i = 3;
while (i) alert(i--);
2 while
let i = 3;
while (i) alert(i--);
3

let i = 0;
while (i < 3) { // shows 0, then 1, then 2
  alert( i );
  i++;
}

Eksekusi tunggal dari badan loop disebut iterasi. Loop pada contoh di atas membuat tiga iterasi

Jika

let i = 3;
while (i) alert(i--);
_4 hilang dari contoh di atas, loop akan berulang (dalam teori) selamanya. Dalam praktiknya, browser menyediakan cara untuk menghentikan loop seperti itu, dan di JavaScript sisi server, kita dapat menghentikan prosesnya

Ekspresi atau variabel apa pun bisa menjadi kondisi loop, bukan hanya perbandingan. kondisi dievaluasi dan diubah menjadi boolean oleh

let i = 3;
while (i) { // when i becomes 0, the condition becomes falsy, and the loop stops
  alert( i );
  i--;
}
6

Misalnya, cara yang lebih singkat untuk menulis

let i = 3;
while (i) alert(i--);
6 adalah
let i = 3;
while (i) alert(i--);
7

let i = 3;
while (i) { // when i becomes 0, the condition becomes falsy, and the loop stops
  alert( i );
  i--;
}

Kurung kurawal tidak diperlukan untuk badan garis tunggal

Jika badan loop memiliki pernyataan tunggal, kita dapat menghilangkan kurung kurawal

let i = 3;
while (i) alert(i--);
8

let i = 3;
while (i) alert(i--);
_

Pemeriksaan kondisi dapat dipindahkan di bawah badan loop menggunakan sintaks

let i = 3;
while (i) { // when i becomes 0, the condition becomes falsy, and the loop stops
  alert( i );
  i--;
}
7

do {
  // loop body
} while (condition);

Loop pertama-tama akan mengeksekusi tubuh, kemudian memeriksa kondisinya, dan, meskipun itu benar, jalankan lagi dan lagi

Sebagai contoh

let i = 0;
do {
  alert( i );
  i++;
} while (i < 3);

Bentuk sintaksis ini hanya boleh digunakan ketika Anda ingin badan perulangan dieksekusi setidaknya sekali terlepas dari kondisi yang benar. Biasanya, bentuk lain lebih disukai.

do {
  // loop body
} while (condition);
0

Loop

do {
  // loop body
} while (condition);
_1 lebih kompleks, tetapi ini juga merupakan loop yang paling umum digunakan

Sepertinya ini

for (begin; condition; step) {
  // .. loop body ...
}

Mari pelajari arti dari bagian-bagian ini dengan contoh. Loop di bawah ini menjalankan

do {
  // loop body
} while (condition);
_2 untuk
let i = 3;
while (i) alert(i--);
2 dari
do {
  // loop body
} while (condition);
4 hingga (namun tidak termasuk)
do {
  // loop body
} while (condition);
5

for (let i = 0; i < 3; i++) { // shows 0, then 1, then 2
  alert(i);
}

Mari kita periksa pernyataan

do {
  // loop body
} while (condition);
_1 bagian demi bagian

partbegin
do {
  // loop body
} while (condition);
7Dijalankan sekali setelah memasuki loop. kondisi
let i = 3;
while (i) alert(i--);
3Diperiksa sebelum setiap iterasi loop. Jika salah, loop berhenti. body
do {
  // loop body
} while (condition);
2Berjalan berulang kali saat kondisi benar. step
let i = 3;
while (i) alert(i--);
4Dijalankan setelah badan pada setiap iterasi

Algoritma loop umum bekerja seperti ini

Run begin
→ (if condition → run body and run step)
→ (if condition → run body and run step)
→ (if condition → run body and run step)
→ ...

Yaitu,

let i = 0;
do {
  alert( i );
  i++;
} while (i < 3);
1 dieksekusi sekali, dan kemudian diulang. setelah setiap tes
let i = 3;
while (i) alert(i--);
_0,
let i = 0;
do {
  alert( i );
  i++;
} while (i < 3);
3 dan
let i = 0;
do {
  alert( i );
  i++;
} while (i < 3);
4 dieksekusi

Jika Anda baru mengenal loop, ada baiknya untuk kembali ke contoh dan mereproduksi cara kerjanya langkah demi langkah di selembar kertas

Inilah tepatnya yang terjadi dalam kasus kami

// for (let i = 0; i < 3; i++) alert(i)

// run begin
let i = 0
// if condition → run body and run step
if (i < 3) { alert(i); i++ }
// if condition → run body and run step
if (i < 3) { alert(i); i++ }
// if condition → run body and run step
if (i < 3) { alert(i); i++ }
// ...finish, because now i == 3

Deklarasi variabel sebaris

Di sini, variabel "penghitung"

let i = 3;
while (i) alert(i--);
_2 dideklarasikan tepat di loop. Ini disebut deklarasi variabel "inline". Variabel seperti itu hanya terlihat di dalam loop

let i = 0;
while (i < 3) { // shows 0, then 1, then 2
  alert( i );
  i++;
}
0

Alih-alih mendefinisikan variabel, kita bisa menggunakan yang sudah ada

let i = 0;
while (i < 3) { // shows 0, then 1, then 2
  alert( i );
  i++;
}
1

Bagian mana pun dari

do {
  // loop body
} while (condition);
_1 dapat dilewati

Misalnya, kita dapat menghilangkan

let i = 0;
do {
  alert( i );
  i++;
} while (i < 3);
_1 jika kita tidak perlu melakukan apa pun di awal perulangan

Seperti di sini

let i = 0;
while (i < 3) { // shows 0, then 1, then 2
  alert( i );
  i++;
}
2

Kami juga dapat menghapus bagian

let i = 0;
do {
  alert( i );
  i++;
} while (i < 3);
_4

let i = 0;
while (i < 3) { // shows 0, then 1, then 2
  alert( i );
  i++;
}
3

Hal ini membuat loop identik dengan ________22______9

Kami benar-benar dapat menghapus semuanya, membuat loop tak terbatas

let i = 0;
while (i < 3) { // shows 0, then 1, then 2
  alert( i );
  i++;
}
4

Harap perhatikan bahwa dua

do {
  // loop body
} while (condition);
_1 titik koma
for (begin; condition; step) {
  // .. loop body ...
}
1 harus ada. Jika tidak, akan ada kesalahan sintaksis

Biasanya, sebuah loop keluar ketika kondisinya menjadi salah

Tapi kita bisa memaksa keluar kapan saja menggunakan direktif

for (begin; condition; step) {
  // .. loop body ...
}
2 khusus

Misalnya, loop di bawah ini meminta serangkaian angka dari pengguna, "putus" saat tidak ada angka yang dimasukkan

let i = 0;
while (i < 3) { // shows 0, then 1, then 2
  alert( i );
  i++;
}
5

Direktif

for (begin; condition; step) {
  // .. loop body ...
}
2 diaktifkan pada baris
for (begin; condition; step) {
  // .. loop body ...
}
4 jika pengguna memasukkan baris kosong atau membatalkan input. Ini segera menghentikan loop, meneruskan kontrol ke baris pertama setelah loop. Yaitu,
for (begin; condition; step) {
  // .. loop body ...
}
5

Kombinasi "loop tak terbatas +

for (begin; condition; step) {
  // .. loop body ...
}
2 sesuai kebutuhan" sangat bagus untuk situasi ketika kondisi loop harus diperiksa bukan di awal atau akhir loop, tetapi di tengah atau bahkan di beberapa tempat di tubuhnya

Arahan

for (begin; condition; step) {
  // .. loop body ...
}
_7 adalah "versi yang lebih ringan" dari
for (begin; condition; step) {
  // .. loop body ...
}
2. Itu tidak menghentikan perulangan while. Sebaliknya, itu menghentikan iterasi saat ini dan memaksa loop untuk memulai yang baru (jika kondisinya memungkinkan)

Kita dapat menggunakannya jika sudah selesai dengan iterasi saat ini dan ingin melanjutkan ke iterasi berikutnya

Loop di bawah ini menggunakan

for (begin; condition; step) {
  // .. loop body ...
}
_7 untuk hanya menampilkan nilai ganjil

let i = 0;
while (i < 3) { // shows 0, then 1, then 2
  alert( i );
  i++;
}
6

Untuk nilai genap

let i = 3;
while (i) alert(i--);
2, direktif
for (begin; condition; step) {
  // .. loop body ...
}
7 berhenti mengeksekusi badan dan meneruskan kontrol ke iterasi berikutnya dari
do {
  // loop body
} while (condition);
1 (dengan nomor berikutnya). Jadi
for (begin; condition; step) {
  // .. loop body ...
}
_5 hanya dipanggil untuk nilai ganjil

Arahan

for (begin; condition; step) {
  // .. loop body ...
}
_7 membantu mengurangi nesting

Sebuah loop yang menunjukkan nilai ganjil bisa terlihat seperti ini

let i = 0;
while (i < 3) { // shows 0, then 1, then 2
  alert( i );
  i++;
}
7

Dari segi teknis, ini identik dengan contoh di atas. Tentunya, kita bisa membungkus kode dalam blok

for (let i = 0; i < 3; i++) { // shows 0, then 1, then 2
  alert(i);
}
5 daripada menggunakan
for (begin; condition; step) {
  // .. loop body ...
}
7

Tapi sebagai efek samping, ini menciptakan satu level lagi dari nesting (panggilan

for (begin; condition; step) {
  // .. loop body ...
}
5 di dalam kurung kurawal). Jika kode di dalam
for (let i = 0; i < 3; i++) { // shows 0, then 1, then 2
  alert(i);
}
_5 lebih panjang dari beberapa baris, hal itu dapat mengurangi keterbacaan keseluruhan

Tidak

for (let i = 0; i < 3; i++) { // shows 0, then 1, then 2
  alert(i);
}
_9 di sebelah kanan '?'

Harap perhatikan bahwa konstruksi sintaks yang bukan ekspresi tidak dapat digunakan dengan operator ternary

Run begin
→ (if condition → run body and run step)
→ (if condition → run body and run step)
→ (if condition → run body and run step)
→ ...
0. Secara khusus, arahan seperti
for (let i = 0; i < 3; i++) { // shows 0, then 1, then 2
  alert(i);
}
_9 tidak diizinkan di sana

Misalnya, jika kita mengambil kode ini

let i = 0;
while (i < 3) { // shows 0, then 1, then 2
  alert( i );
  i++;
}
8

…dan tulis ulang menggunakan tanda tanya

let i = 0;
while (i < 3) { // shows 0, then 1, then 2
  alert( i );
  i++;
}
_9

.. itu berhenti bekerja. ada kesalahan sintaks

Ini hanyalah alasan lain untuk tidak menggunakan operator tanda tanya

Run begin
→ (if condition → run body and run step)
→ (if condition → run body and run step)
→ (if condition → run body and run step)
→ ...
0 alih-alih
for (let i = 0; i < 3; i++) { // shows 0, then 1, then 2
  alert(i);
}
5

Terkadang kita perlu keluar dari beberapa loop bersarang sekaligus

Misalnya, dalam kode di bawah ini kita mengulangi

let i = 3;
while (i) alert(i--);
2 dan
Run begin
→ (if condition → run body and run step)
→ (if condition → run body and run step)
→ (if condition → run body and run step)
→ ...
5, meminta koordinat
Run begin
→ (if condition → run body and run step)
→ (if condition → run body and run step)
→ (if condition → run body and run step)
→ ...
6 dari
Run begin
→ (if condition → run body and run step)
→ (if condition → run body and run step)
→ (if condition → run body and run step)
→ ...
7 ke
Run begin
→ (if condition → run body and run step)
→ (if condition → run body and run step)
→ (if condition → run body and run step)
→ ...
8

let i = 3;
while (i) { // when i becomes 0, the condition becomes falsy, and the loop stops
  alert( i );
  i--;
}
0

Kami membutuhkan cara untuk menghentikan proses jika pengguna membatalkan input

for (begin; condition; step) {
  // .. loop body ...
}
2 biasa setelah
// for (let i = 0; i < 3; i++) alert(i)

// run begin
let i = 0
// if condition → run body and run step
if (i < 3) { alert(i); i++ }
// if condition → run body and run step
if (i < 3) { alert(i); i++ }
// if condition → run body and run step
if (i < 3) { alert(i); i++ }
// ...finish, because now i == 3
0 hanya akan memutus lingkaran dalam. Itu tidak cukup – label, datang untuk menyelamatkan

Label adalah pengidentifikasi dengan titik dua sebelum loop

let i = 3;
while (i) { // when i becomes 0, the condition becomes falsy, and the loop stops
  alert( i );
  i--;
}
1

Pernyataan

// for (let i = 0; i < 3; i++) alert(i)

// run begin
let i = 0
// if condition → run body and run step
if (i < 3) { alert(i); i++ }
// if condition → run body and run step
if (i < 3) { alert(i); i++ }
// if condition → run body and run step
if (i < 3) { alert(i); i++ }
// ...finish, because now i == 3
_1 dalam loop di bawah ini keluar ke label

let i = 3;
while (i) { // when i becomes 0, the condition becomes falsy, and the loop stops
  alert( i );
  i--;
}
2

Pada kode di atas,

// for (let i = 0; i < 3; i++) alert(i)

// run begin
let i = 0
// if condition → run body and run step
if (i < 3) { alert(i); i++ }
// if condition → run body and run step
if (i < 3) { alert(i); i++ }
// if condition → run body and run step
if (i < 3) { alert(i); i++ }
// ...finish, because now i == 3
_2 melihat ke atas untuk label bernama
// for (let i = 0; i < 3; i++) alert(i)

// run begin
let i = 0
// if condition → run body and run step
if (i < 3) { alert(i); i++ }
// if condition → run body and run step
if (i < 3) { alert(i); i++ }
// if condition → run body and run step
if (i < 3) { alert(i); i++ }
// ...finish, because now i == 3
3 dan keluar dari lingkaran itu

Jadi kontrol langsung dari

for (begin; condition; step) {
  // .. loop body ...
}
_4 ke
// for (let i = 0; i < 3; i++) alert(i)

// run begin
let i = 0
// if condition → run body and run step
if (i < 3) { alert(i); i++ }
// if condition → run body and run step
if (i < 3) { alert(i); i++ }
// if condition → run body and run step
if (i < 3) { alert(i); i++ }
// ...finish, because now i == 3
5

Kami juga dapat memindahkan label ke baris terpisah

let i = 3;
while (i) { // when i becomes 0, the condition becomes falsy, and the loop stops
  alert( i );
  i--;
}
_3

Arahan

for (begin; condition; step) {
  // .. loop body ...
}
_7 juga dapat digunakan dengan label. Dalam hal ini, eksekusi kode melompat ke iterasi berikutnya dari loop berlabel

Label tidak memungkinkan untuk "melompat" ke mana pun

Label tidak memungkinkan kita untuk melompat ke sembarang tempat dalam kode

Misalnya, tidak mungkin melakukan ini

let i = 3;
while (i) { // when i becomes 0, the condition becomes falsy, and the loop stops
  alert( i );
  i--;
}
_4

Direktif

for (begin; condition; step) {
  // .. loop body ...
}
2 harus berada di dalam blok kode. Secara teknis, blok kode berlabel apa pun bisa digunakan, mis. g

let i = 3;
while (i) { // when i becomes 0, the condition becomes falsy, and the loop stops
  alert( i );
  i--;
}
5

…Meskipun, 99. 9% dari waktu

for (begin; condition; step) {
  // .. loop body ...
}
2 digunakan di dalam loop, seperti yang telah kita lihat pada contoh di atas

for (begin; condition; step) {
  // .. loop body ...
}
_7 hanya mungkin dari dalam satu lingkaran

Kami membahas 3 jenis loop

  • let i = 3;
    while (i) { // when i becomes 0, the condition becomes falsy, and the loop stops
      alert( i );
      i--;
    }
    6 – Kondisi diperiksa sebelum setiap iterasi
  • let i = 3;
    while (i) { // when i becomes 0, the condition becomes falsy, and the loop stops
      alert( i );
      i--;
    }
    7 – Kondisi diperiksa setelah setiap iterasi
  • let i = 0;
    while (i < 3) { // shows 0, then 1, then 2
      alert( i );
      i++;
    }
    02 – Kondisi diperiksa sebelum setiap iterasi, pengaturan tambahan tersedia

Untuk membuat loop “tak terbatas”, biasanya digunakan konstruksi

let i = 0;
while (i < 3) { // shows 0, then 1, then 2
  alert( i );
  i++;
}
03. Loop seperti itu, seperti yang lainnya, dapat dihentikan dengan direktif
for (begin; condition; step) {
  // .. loop body ...
}
2

Jika kita tidak ingin melakukan apa pun dalam iterasi saat ini dan ingin meneruskan ke iterasi berikutnya, kita dapat menggunakan direktif

for (begin; condition; step) {
  // .. loop body ...
}
7

for (let i = 0; i < 3; i++) { // shows 0, then 1, then 2
  alert(i);
}
9 mendukung label sebelum loop. Label adalah satu-satunya cara untuk
for (let i = 0; i < 3; i++) { // shows 0, then 1, then 2
  alert(i);
}
_9 keluar dari loop bersarang untuk pergi ke loop luar

Lakukan

perulangan 'do-while' selalu dijalankan setidaknya sekali , sedangkan perulangan while mungkin tidak pernah dijalankan.

Berapa kali while loop berjalan setidaknya?

Menjawab. Do while loop akan mengeksekusi setidaknya satu kali. Do while loop dikenal sebagai Exit controlled loop. Bahkan jika kondisinya tidak benar untuk pertama kali maka kontrol juga akan masuk dalam loop

Loop Javascript mana yang memastikan bahwa setidaknya satu iterasi tunggal akan terjadi?

perulangan while , kondisi diperiksa pada akhir setiap iterasi perulangan, bukan di awal sebelum perulangan berjalan. Ini berarti bahwa kode dalam do. while loop dijamin berjalan setidaknya sekali, bahkan jika ekspresi kondisi sudah bernilai true.