14-流程控制语句
一、顺序语句
没有特定的语法结构,代码从上到下依次执行
二、分支结构
由上到下执行代码的过程中,根据不同的条件,执行不同的路径代码(执行代码多选一的过程),从而得到不同的结果
1.if语句
- 条件判断
条件成立才执行。如果条件不成立,那就什么都不做。
if (条件表达式) {
// 条件返回ture,执行的代码块
}
- 条件分支语句
if (条件表达式) {
// 条件返回ture,执行的代码块
} else {
// 条件返回false,执行的代码块
}
if (条件表达式1) {
//条件1返回ture,执行的代码块
} else if (条件表达式2) {
// 条件1不满足,条件2满足时,做的事情
} else if (条件表达式3) {
// 条件1、2不满足,条件3满足时,做的事情
...
} else {
// 兜底,上述所有都不满足时候执行的代码
}
<script>
var score = +prompt('请输入你的成绩(0-100)');
if (score <= 60) {
alert('补考吧');
} else if (score <= 70) {
alert('及格线边缘徘徊,继续加油');
} else if (score < 80) {
alert('一般,冲冲冲');
} else if (score <= 90) {
alert('良好,很棒了~');
} else if (score < 100) {
alert('优秀,就差一点点');
} else if (score == 100) {
alert('满分选手,真厉害!努力总会有回报,继续保持');
} else {
alert('你是魔鬼吗?分数范围0-100');
}
</script>
- if嵌套
<script>
// 92号汽油,每升6元;如果大于等于20升,那么每升5.9;
// 97号汽油,每升7元;如果大于等于30升,那么每升6.95
//1.获取用户输入的内容
var uName = parseInt(prompt("您想加什么油?填写92或者97"));
var num = parseFloat(prompt("您想加多少升?"));
var price;
//2.判断是那种类型的
if (uName === 92) {
//编号是92的时候做的事情
if (num >= 20) {
price = num * 5.9;
} else {
price = num * 6;
}
} else if (uName === 97) {
//编号是97的时候做的事情
if (num >= 30) {
price = num * 6.95;
} else {
price = num * 7;
}
} else {
alert("不好意思,没有这个编号的汽油!");
}
alert("价格是" + price);
</script>
2.switch语句
首先,计算出表达式的值,和case依次比较,一旦有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结束。然后,如果所有的case都和表达式的值不匹配,就会执行default语句体部分。
switch(表达式) {
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;
...
...
default:
语句体 n+1;
break;
}
- case得值与switch中表达式的值做权 全等 比较
- 语句后面不加break会出现case穿透(case匹配上,后面的代码一直执行,知道遇到break或switch结束)
注意 程序是遇到break结束,而不是遇到default结束!!!,switch执行顺序与default无关!!!
case穿透的运用
<script>
// 1.获取用户输入的星期
var week = +prompt('请输入当前星期(1-7)');
switch (week) {
// 星期1-5工作
case 1:
case 2:
case 3:
case 4:
case 5:
alert('work');
break; // 在这里放一个 break
// 星期6-7放松
case 6:
case 7:
alert('relax');
break; // 在这里放一个 break
// 超出范围
default:
week = +prompt('输入错误,请输入正确范围1-7');
break;
}
</script>
3.三元表达式
表达式1 ? 表达式2 : 表达式3;
-
如果表达式1为 true ,则返回表达式2的值,如果表达式1为 false,则返回表达式3的值
-
简单理解: 就类似于 if else (双分支) 的简写
三、循环结构
通过循环语句可以重复的执行一段代码。
1.for循环
适用于明确的知道循环次数
for(①初始化表达式; ②条件表达式; ④初始化表达式变化){
③循环体
}
执行原理
①执行初始化表达式,初始化变量(初始化表达式只会执行一次)
②执行条件表达式
如果为true,则执行循环③
如果为false,终止循环
④初始化表达式变化
⑤然后继续②->③->④,知道②为false,退出循环
死循环
//当②返回的一直是true时候
for (var i = 1; i > 0; i++) {
console.log(i);
}
2.while循环
适用于循环次数不明确
while(条件表达式){
循环体
}
while语句在执行时,先对条件表达式进行求值判断:
如果值为true,则执行循环体:
循环体执行完毕以后,继续对表达式进行判断
如果为true,则继续执行循环体,以此类推
如果值为false,则终止循环
2.do...while循环
do{
循环体
}while(条件表达式)
do...while语句在执行时,会先执行循环体:
循环体执行完毕以后,在对while后的条件表达式进行判断:
如果结果为true,则继续执行循环体,执行完毕继续判断以此类推
如果结果为false,则终止循环
- do...while可以保证循环体至少执行一次,而while不能。
3.break
- break可以用来退出switch语句或退出整个循环语句(循环语句包括for循环、while循环)
<script>
for (var i = 0; i < 5; i++) {
console.log('i的值:' + i);
if (i == 2) {
break; //break放在if里面时,输出在前面,就先执行完再跳出
}
}
// 结果
// i的值:0
// i的值:1
// i的值:2
for (var i = 0; i < 5; i++) {
if (i == 2) {
break; //break放在if里面时,输出在后面,就先跳出,不输出
}
console.log('i的值:' + i);
}
// 结果
// i的值:0
// i的值:1
</script>
- break会立即终止离它最近的那个循环语句,后面的代码都不会执行
while (true) {
alert('小艾同学');
break;
alert('666');//break后面的不执行
}
4.continue
-
continue可以用来跳过当次循环,继续下一次循环,并会跳出整个循环体
-
同样,continue默认只会离他最近的循环起作用。