Skip to main content

迴圈 while loop

除了 for loop 之外,還有另一種迴圈的語法,for loop 比較適合用在「你確切知道你想要跑幾圈」的狀況,例如說你有 n 筆資料,要處理每一筆,你知道你要跑 n 圈。

而 while 則適合用在「你不知道想要跑幾圈,但你知道何時要跳出」的時機點。

基本語法:

while(迴圈繼續執行的條件) {
}

基本使用#

let score = [60, 70, 50, 20, 100, 99, 87]
let total = 0
let index = 0
// 把分數依序相加,直到超過 300
while(total < 300) {
total += score[index]
index++
}

或者是針對每一個元素做處理:

let queue = [task1, task2, task3]
// 如果 queue 裡面還有東西
while(queue.length > 0) {
// 從 queue 裡面取出第一個元素
let element = queue.shift()
// do something
}

還有另外一種類似的語法是先做事情才做條件判斷:

do {
} while()

這邊就先不介紹這個了。

常見錯誤#

寫出無窮迴圈#

要寫出無窮迴圈很簡單,while(true){} 就行了,但就跟 if 的常見錯誤一樣,有些人會不小心這樣寫:

while (sum = 1) {
}

sum == 1 寫成 sum = 1,會先執行 sum=1,才執行條件判斷,因此不管怎樣都會是 true,就成了無窮迴圈。

還有些是因為忘記做事情,因為像 for loop 每一圈都會 i++,可是到了 while loop 有些人會忘記做類似的事,就永遠停在同一圈。