虽然,平时工作中
while
用的并不多,多数情况下大家都习惯使用for
循环,但while
的用法还是要搞懂,下面以简单用例来讲解while
以及while
结合continue break return
一起使用的用法
while循环
while
循环会一直循环代码块,只要指定的条件为true
。
let i = 0
while (i < 10) {
console.log(i)
i++
}
// 0 1 2 3 4 5 6 7 8 9
如果上面忘记写i++
let i = 0
while (i < 10) {
console.log(i)
}
// 0 0 0 0 ...循环永不会结束。这会导致浏览器崩溃。
Do/While 循环
do/while
循环是 while
循环的变体。在检查条件是否为真之前,这种循环会执行一次代码块,然后只要条件为真就会重复循环。
let i = 0
do {
console.log(i)
i++
}
while (i < 10)
// 0 1 2 3 4 5 6 7 8 9
let i = 12
do {
console.log(i)
i++
}
while (i < 10)
// 12
虽然12
不满足i<10
的条件,但默认还是会先执行一次do
代码块。
continue break return在while中的作用
continue
用于跳过循环中的一个迭代。break
语句用于跳出循环。return
语句会终止函数的执行并返回函数的值。
(function () {
let i = 0
while (true) {
if (i < 10) {
i++
console.log(i)
continue
}
if (i >= 10){
return
}
}
console.log('while done')
})()
// 0 1 2 3 4 5 6 7 8 9 10
结果console.log('while done')
永远无法被打印,原因是当i<10
时执行i++
后直接continue
本次循环继续下一次循环;当i===10
时直接return
跳出当前函数体,所以console.log('while done')
永远无法被执行。
当我们把上面的return
改为break
:
(function () {
let i = 0
while (true) {
if (i < 10) {
i++
console.log(i)
}
if (i >= 10){
break
}
}
console.log('while done')
})()
// 0 1 2 3 4 5 6 7 8 9 10 while done
return
改为break
后,当i===10
时跳出循环体,继续执行后面的语句,此时console.log('while done')
可以被执行
当此时我们在i<10
的条件里再加一个if(i===3) continue
语句:
(function () {
let i = 0
while (true) {
if (i < 10) {
i++
if (i===3) {
continue
}
console.log(i)
}
if (i >= 10){
break
}
}
console.log('while done')
})()
// 0 1 2 4 5 6 7 8 9 10 while done
此时3
未被打印,原因是当i===3
时执行continue
语句跳出当前循环即无法执行if(i===3)
后面的语句,继续执行下一次循环继续打印4 5 ...