while 迴圈顯示哪些值?
重要性:4
對於每個迴圈反覆運算,寫下它輸出的值,然後與解答進行比較。
兩個迴圈都會 alert
相同的值嗎?
-
前置形式
++i
let i = 0; while (++i < 5) alert( i );
-
後置形式
i++
let i = 0; while (i++ < 5) alert( i );
此作業說明了在比較中使用後置/前置形式會如何導致不同的結果。
-
從 1 到 4
let i = 0; while (++i < 5) alert( i );
第一個值是
i = 1
,因為++i
會先遞增i
,然後回傳新的值。因此,第一次比較是1 < 5
,而alert
會顯示1
。然後依序顯示
2, 3, 4…
,因為++
在變數之前,所以比較時會使用已遞增的值。最後,
i = 4
遞增為5
,比較while(5 < 5)
失敗,迴圈停止。因此不會顯示5
。 -
從 1 到 5
let i = 0; while (i++ < 5) alert( i );
第一個值仍然是
i = 1
。i++
的後置形式會先遞增i
,然後傳回舊值,因此比較i++ < 5
會使用i = 0
(與++i < 5
相反)。但是
alert
呼叫是分開的。這是另一個陳述式,會在遞增和比較之後執行。因此它會取得目前的i = 1
。然後依序顯示
2, 3, 4…
讓我們在
i = 4
時停止。前置形式++i
會遞增它,並在比較中使用5
。但是這裡我們有後置形式i++
。因此它會將i
遞增為5
,但傳回舊值。因此比較實際上是while(4 < 5)
,為真,控制權會傳遞到alert
。值
i = 5
是最後一個,因為在下一步while(5 < 5)
為假。