do...while 循环
所有循环语句 都是基于某一个条件去重复的执行某一段代码,
如果 条件不成立, 直接结束循环
是一个类似 while 的循环语句
while 循环在开始的时候, 会先判断条件是否成立 然后决定是否执行代码
do...while 循环在开始第一次的时候, 不会判断条件, 也就是说, 不管条件成功与失败, 第一次都会执行
var num = 10
while (num < 5) {
console.log(num)
num--
}
第一次执行
num === 10
while 执行的条件是 num < 5
目前 num 不小于 5 所以条件不成立, 那么循环立即停止, 不会执行
do...while
var num = 10
do {
console.log(num)
num--
} while (num < 5)
do...while 循环的时候, 第一次的时候 不会管这个条件是否成立, 他一定会执行一次
第一次执行 (忽略条件, 直接执行代码)
num === 10
因为第一次执行不需要判断条件, 所以直接执行代码
console.log(num) -> 10
num-- 后续使用 num 的时候, num 的值就已经发生变化了, 自减1
判断条件: num < 5 才能进行下一轮循环
此时 num 的值 是 10, 不满足条件, 所以循环到此结束
for 循环
也是 循环语句的一种, 但是 语法上和另外两个 不同!
语法: for (1. 初始化; 2. 条件; 3. 改变自身) { 4.循环要执行的代码 }
目前 for 循环的使用场景来看, 要稍微多一点, 但不代表 可以完全替代 while 循环或者 do...while循环
var num = 0
while (num < 3) {
console.log(num)
num++
}
console.log('手动分割线====================')
for (var n = 0; n < 3; n++) {
console.log(n)
}
流程控制
通过两个关键字, 可以起到控制循环的一个作用, 这就是流程控制
1. break (结束掉整个循环, 不管循环后边还有几轮)
今天早上我买了五个包子, 然后呢 我吃了 3包子, 这个时候我吃饱了, 我吃不下去了
此时我就结束掉了 吃包子这件事, 也就是说 第四个和第五个包子我就不吃了
2. continue (跳出当前这一轮循环, 直接开始下一轮循环)
今天早上我买了五个包子, 然后呢 我在吃第三个包子的时候, 这个时候, 第三个包子掉地上了, 所以这个包子我不吃了
此时我开始吃 第四个包子与第五个包子
for (var i = 1; i <= 5; i++) {
console.log('我吃了一个包子')
if (i === 3) {
break
}
}
for (var i = 1; i <= 5; i++) {
if (i === 3) {
console.log('第三个包子掉地上了, 我不吃这个包子了')
continue
}
console.log('我吃了一个包子')
}
循环嵌套
注意: 外层循环的变量 与 内层循环的变量 不要相同
for (var i = 0; i < 3; i++) {
console.log(i)
}
for (var j = 0; j < 3; j++) {
for (var i = 0; i < 3; i++) {
console.log(i)
}
console.log('j 的值为: ', j)
}
第一次执行:
j === 0 运行条件 j < 3 符合条件, 开始执行内部代码
内部代码:
内部循环第一次执行:
i === 0 运行条件 i < 3 符合条件, 开始执行内部代码
console.log(i) 此时会打印 0
i++ 也就是下一轮循环开始的时候 i 的值变为了 1
内部循环第二次执行:
i === 1 运行条件 i < 3 符合条件, 开始执行内部代码
console.log(i) 此时会打印 1
i++ 也就是下一轮循环开始的时候 i 的值 变为了 2
内部循环第三次执行:
i === 2 运行条件 i < 3 符合条件, 开始执行内部代码
console.log(i) 此时会打印2
i++ 也就是下一轮循环开始的时候 i 的值 变为了 3
内部循环第四次执行:
i === 3 运行条件 i < 3 目前不符合条件, 结束循环!!!!
console.log(j) 此时会出输出什么 0
j++ 也就是 下一次循环开始的时候 j 的值变了 1
第二次执行:
j === 1 运行条件 j < 3 符合条件, 开始执行内部代码
内部代码:
内部循环第一次执行:
i === 0 运行条件 i < 3 符合条件, 开始执行内部代码
console.log(i) 此时会打印 0
i++ 也就是下一轮循环开始的时候 i 的值变为了 1
内部循环第二次执行:
i === 1 运行条件 i < 3 符合条件, 开始执行内部代码
console.log(i) 此时会打印 1
i++ 也就是下一轮循环开始的时候 i 的值 变为了 2
内部循环第三次执行:
i === 2 运行条件 i < 3 符合条件, 开始执行内部代码
console.log(i) 此时会打印2
i++ 也就是下一轮循环开始的时候 i 的值 变为了 3
内部循环第四次执行:
i === 3 运行条件 i < 3 目前不符合条件, 结束循环!!!!
console.log(j) 输出的值 1
j++ 也就是 下一次循环开始的时候 j 的值变为了 2
第三次执行:
j === 2 运行条件 j < 3 符合条件, 开始执行内部代码
内部代码:
内部循环第一次执行:
i === 0 运行条件 i < 3 符合条件, 开始执行内部代码
console.log(i) 此时会打印 0
i++ 也就是下一轮循环开始的时候 i 的值变为了 1
内部循环第二次执行:
i === 1 运行条件 i < 3 符合条件, 开始执行内部代码
console.log(i) 此时会打印 1
i++ 也就是下一轮循环开始的时候 i 的值 变为了 2
内部循环第三次执行:
i === 2 运行条件 i < 3 符合条件, 开始执行内部代码
console.log(i) 此时会打印2
i++ 也就是下一轮循环开始的时候 i 的值 变为了 3
内部循环第四次执行:
i === 3 运行条件 i < 3 目前不符合条件, 结束循环!!!!
console.log(j) 输出的值 2
j++ 也就是 下一次循环开始的时候 j 的值变为了 3
第四次执行:
j === 3 运行条件 j < 3 目前不符合条件了, 所以结束循环