JavaScript while 語句
while 語句可以在某個條件表達式為真的前提下,循環執行指定的一段代碼,直到那個表達式不為真時結束循環?!?MDN
while 語句也是一種循環語句,也稱 while 循環。
while 循環接收一個表達式,當這個表達式結果非 false
的時候,就會執行 while 循環的代碼塊。
1. 基本語法
while (表達式) {
表達式結果為真時候執行的代碼;
}
while 的語法相對簡單,其使用的頻率沒有for循環
高,可以使用 for 循環完成的都可以使用 while 循環完成,反之亦然。
例如輸出 0 到 100 的偶數,使用 while 就可以這樣做:
var num = 0
while (num <= 100) {
if (num % 2 === 0) {
console.log(num);
}
num++;
}
var i;
for (i = 0; i <= 100; i++) {
if (i % 2 === 0) {
console.log(i);
}
}
對比 for 循環,許多場景兩者在同一問題的處理方式上區別不大。
for 循環將初始操作、循環條件、條件判斷后要做的事情放在了規定的位置,而 while 循環只是將這些操作換個地方寫而已。
事實上 for 循環也可以寫得像 while 循環一樣:
var num = 0;
for (;num <= 100;) {
if (num % 2 === 0) {
console.log(num);
}
num++;
}
換成這樣的寫法可以說是高度一致了。
2. 使用 while 的場景
根據個人的經驗,while 比 for 循環用到的少,通常有三種情況:
- 需要“無限循環”
相比 for 循環,while 來做無限循環更直接:
for (;;) {
console.log('我停不下來了!!');
}
console.log('永遠也不會執行到這里 :)');
while(true) {
console.log('我也停不下來了!!');
}
那么問題就來了,為什么需要無限循環。
主要是想將復雜的條件拿出來,自己判斷條件是否達成,然后使用 break
中斷循環。
- 有許多不可控的量構成循環條件
當循環條件為一個復雜表達式,而又不需要用到循環計數變量的時候(循環變量不一定非要是一個數字進行累加的)。
- 通過循環對已有變量做操作,并將這個變量作為條件或者構成條件的成員
3. 小結
可以使用 while 語句實現的需求,都可以使用 for 語句實現,但 while 更適合復雜循環條件的場景。