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