目录
循环目的:重复执行某些代码。
for循环
重复执行某些代码,通常跟计数有关系。
语法结构:
for (初始化变量;条件表达式;操作表达式) {
循环体; //被重复执行的代码称为循环体
}
初始化变量:就是用var声明的一个普通变量,通常作为计数器使用
条件表达式:就是用来决定每一次循环是否继续执行,就是终止条件
操作表达式:是每次循环最后执行的代码,经常用于计数器变量进行更新(递增/递减)
for循环执行顺序
<script>
for (var i = 1; i <= 3; i++) {
console.log('你好');
}
console.log(i);
</script>
//第一次for循环
var i = 1;
i <= 3;
console.log('你好');
i++; // i=2
//第二次for循环
i <= 3;
console.log('你好');
i++; // i=3
//第三次for循环
i <= 3;
console.log('你好');
i++; // i=4
//第四次for循环
i <= 3; //此时结果为false,所以结束循环,输出i结果为4
// 例题
<script>
for (var i = 1; i === 3; i++) {
console.log('你好');
}
</script>
// 执行0次
for循环执行相同的代码(递减)
<script>
var num = prompt('请您输入次数');
for (var i = num; i >= 1; i--) {
console.log('好好学习天天向上');
}
</script>
双重/层for循环
循环嵌套
语法结构:
for (外层的初始化变量; 外层的条件表达式; 外层的操作表达式) {
for (里层的初始化变量; 里层的条件表达式; 里层的操作表达式) {
// 执行语句;
}
}
// 可以把里面的循环看做是外层循环的语句
双层for循环执行顺序
外层循环执行一次, 里层循环执行全部
<script>
for (var i = 1; i <= 2; i++) {
console.log('这是外层循环第' + i + '次');
for (var j = 1; j <= 3; j++) {
console.log('这是里层的循环第' + j + '次');
}
}
</script>
/*
//外层for循环第一次
var i = 1;
i <= 2;
console.log('这是外层循环第' + i + '次'');
for (var j = 1; j <= 3; j++) {
console.log('这是里层的循环第' + j + '次');
}
//里层for循环第一次
var j = 1;
j <= 3;
console.log('这是里层的循环第' + j + '次');
j++; // 2
//里层for循环第二次
j <= 3;
console.log('这是里层的循环第' + j + '次');
j++; // 3
//里层for循环第三次
j <= 3;
console.log('这是里层的循环第' + j + '次');
j++; // 4
//里层for循环第四次
j <= 3; // j=4,跳出循环,里层结束
i++; // 2 外层for循环第一次结束
//外层for循环第二次
i <= 2;
console.log('这是外层循环第' + i + '次'');
for (var j = 1; j <= 3; j++) {
console.log('这是里层的循环第' + j + '次');
}
//里层for循环第一次
var j = 1;
j <= 3;
console.log('这是里层的循环第' + j + '次');
j++; // 2
//里层for循环第二次
j <= 3;
console.log('这是里层的循环第' + j + '次');
j++; // 3
//里层for循环第三次
j <= 3;
console.log('这是里层的循环第' + j + '次');
j++; // 4
//里层for循环第四次
j <= 3; // j=4,跳出循环,里层结束
i++; // 3 外层for循环第二次结束
//外层for循环第三次
i <= 2; // i=3,跳出循环,外层结束
*/
while循环
语法结构:
while (条件表达式) {
// 循环体
}
执行思路:当条件表达式结果为true,则执行循环体,否则退出循环
注意点:
- 有计数器即初始化变量
- 也有操作表达式,完成计数器的更新,防止死循环
<script>
var num = 1;
while (num <= 100) {
console.log('你好');
num++;
}
</script>
do while循环
语法结构:
do {
// 循环体
} while (条件表达式)
执行思路:先执行一次循环体,再判断条件,如果条件表达式结果为真,则继续执行循环体,否则退出循环
<script>
var i = 1;
do {
console.log('how are you?');
i++;
} while (i <= 100)
</script>
do while 循环体至少执行一次
三者总结
- for循环:适合数字,确定要循环多少次
- 循环次数不确定,用while或do-while
- 根据需求,如果是先干再判断:do-while
- 如果是先判断再干:while
continue
立即跳出本次循环,直接执行下一次循环
<script>
// 求1~100 之间, 除了能被7整除之外的整数和
var sum = 0;
for (var i = 1; i <= 100; i++) {
if (i % 7 == 0) {
continue;
}
sum += i;
}
console.log(sum);
</script>
break
立即退出整个循环
for里的break:只要浏览器执行了break,它后面的所有代码都不执行,而且立即结束整个for循环
简易ATM案例
- 里面现存有 100 块钱。
- 如果存钱,就用输入钱数加上先存的钱数, 之后弹出显示余额提示框
- 如果取钱,就减去取的钱数,之后弹出显示余额提示框
- 如果显示余额,就输出余额
- 如果退出,弹出退出信息提示框
<script>
var rest = 100
do {
var handler = Number(prompt('请输入您的操作:\n1.存钱\n2.取钱\n3.查看余额\n4.退出'))
if (handler === 4) {
break
}
switch (handler) {
case 1:
var money = Number(prompt('请输入您的存款金额'))
rest += money
alert(rest)
break
case 2:
var money = Number(prompt('请输入您的取款金额'))
if (rest < money) {
alert('余额不足')
} else {
rest -= money
alert(rest)
}
break
case 3:
alert(rest)
break
// case 4:
// break // 这里的break只会退出switch语句,不会退出while循环
}
} while (true)
</script>