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 更适合复杂循环条件的场景。