Nilai mana yang ditampilkan perulangan while?
Untuk setiap iterasi, tulis nilai mana yang dikeluarkan dan bandingkan dengan solusinya.
Kedua perulangan alert
nilai yang sama, atau tidak?
-
Bentuk prefix
++i
:let i = 0; while (++i < 5) alert( i );
-
Bentuk postfix
i++
let i = 0; while (i++ < 5) alert( i );
Tugas mendemonstrasikan bagaimana bentuk postfix/prefix dapat menyebabkan hasil yang berbeda ketika digunakan dalam perbandingan
-
Dari 1 ke 4
let i = 0; while (++i < 5) alert( i );
nilai pertama adalah
i = 1
, karena++i
menambah terlebih dahului
dan mengembalikan nilai baru. Jadi perbandingan pertama adalah1 < 5
danalert
menampilkan1
.lalu diikuti
2, 3, 4…
– nilainya muncul satu per satu. Perbandingan selalu menggunakan nilai yang ditambah, karna ada++
sebelum variabel.Akhirnya,
i = 4
bertambah menjadi5
, perbandinganwhile(5 < 5)
gagal, dan pengulangan berhenti. Jadi5
tidak ditampilkan. -
Dari 1 ke 5
let i = 0; while (i++ < 5) alert( i );
Lagi, nilai pertama adalah
i = 1
. bentuk postfix darii++
menambahi
dan kemudian mengembalikan nilai yang lama, jadi perbandingani++ < 5
akan menggunakani = 0
(berbeda dengan++i < 5
).Namun panggilan
alert
terpisah. ini adalah pernyataan lain yang berjalan setelah pertambahan dan perbandingan. Jadi ini mendapatkan nilai yang saat inii = 1
.Lalu diikuti
2, 3, 4…
Mari berhenti di
i = 4
. bentuk prefix++i
akan menaikannya dan menggunakan5
di perbandingan. Tapi disini kita mempunyai bentuk postfixi++
. jadi ini menambahi
menjadi5
, namun mengembalikan nilai yang lama. Karna perbandingan yang sebenarnya adalahwhile(4 < 5)
– benar, dan kontrol berlanjut kealert
.Nilai
i = 5
adalah yang terkahir, karena pada langkah berikutnyawhile(5 < 5)
adalah salah.