js学习-3(流程控制语句)
js学习-3(流程控制语句)
代码块
js中的代码块只是用来划分区域的,并没有区别作用域的功能。
即:在代码块内部的变量,在代码块外部仍然可以使用。
流程控制语句
流程控制语句主要包括:
- 顺序结构
- 选择结构:if语句、switch语句
- 循环结构:while语句、for语句
顺序结构:
顺序结构表示按照代码的先后顺序,依次执行。
选择结构:
if条件语句
1、条件判断语句:
if (条件表达式) {
// 条件为真时执行的语句
}
2、条件分支语句:
if (条件表达式) {
// 条件为真时执行的语句
} else {
// 条件为假时执行的语句
}
3、if语句的嵌套:
实例:
一个加油站为了鼓励车主多加油,所以加的多有优惠。
92号汽油,每升6元;如果大于等于20升,那么每升5.9;
97号汽油,每升7元;如果大于等于30升,那么每升6.95
编写JS程序,用户输入自己的汽油编号,然后输入自己加多少升,弹出价格。
代码:
var sort = prompt("请输入您需要的汽油编号(92或97):");
var amount = Number(prompt("请输入您需要加油的数量(升):"));
var price;
if (sort=="92") {
if(amount < 20){
price = amount * 6;
alert("您需要付"+price+"元");
}else {
price = amount * 5.9;
alert("您需要付"+price+"元");
}
} else {
if(amount < 30){
price = amount * 7;
alert("您需要付"+price+"元");
}else {
price = amount * 6.95;
alert("您需要付"+price+"元");
}
}
switch语句
1、switch语句的格式:
switch(表达式) {
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;
... ...
default:
语句体 n+1;
break;
}
2、switch的执行流程:
计算表达式的值,该值和case的值进行比较,一旦有对应的值就会执行该case下的语句,遇到break就会结束;若无case值与其相对应,则会执行default语句体部分。
3、switch语句的结束条件
1)遇到break就结束。此时break的作用就是退出switch语句。
2)执行到程序的末尾就结束。
4、case穿透的问题
当省略switch语句中的break时,会出现case穿透的问题。
case穿透是指当执行了与表达式值相同的case值下的语句之后,会继续执行之后的case情况,直到遇到break或者代码结束。很有可能造成和预想结果不一致。
注意:代码结束的地方是程序的末尾,并不是default所在的位置。即:switch语句的结束和default的顺序无关。
循环结构
循环语句:可以反复多次执行一段代码。
循环结构主要包括:for循环、while循环、do{ }while循环
for循环
语法:
for(①初始化表达式; ②条件表达式; ④更新表达式){
③语句...
}
执行流程:
1)执行初始化表达式,初始化变量
2)执行条件表达式,判断是否执行循环;如果为true,则执行循环,若无false,退出循环。
3)执行更新表达式,重复第二步。
for (var i = 1; i <= 100; i++) {
console.log(i);
}
while循环
语法:
while(条件表达式){
语句
}
执行流程:
首先对条件表达式进行执行求值,
若值为true,则执行循环体的语句,
循环体执行完毕以后,继续判断条件表达式,以此类推
若值为false,则终止循环。
注:若有需要时,也可以用break来终止循环。
do{ }while循环
语法:
do{
语句...
}while(条件表达式)
执行流程:
1)首先执行一次循环体;
2)然后执行条件表达式,对其值进行判断,
若为true,则继续执行循环体,重复第二步;
若为false,终止循环;
while和do{ }while的区别
while是先判断后执行,do{ }while是先执行后判断。
注:do{ }while可以保证循环体至少执行一次。
break和continue
break:
- break可以用来退出switch语句或整个循环语句(循环语句包括for、while。不包括if。if里不能用 break 和 continue,否则会报错)。
- break会立即终止离它最近的那个循环语句。
- 可以为循环语句创建一个label,来标识当前的循环(格式:label:循环语句)。使用break语句时,可以在break后跟着一个label,这样break将会结束指定的循环,而不是最近的。
outer:
for (var i = 0; i < 5; i++) {
console.log("外层循环 i 的值:" + i)
inner:
for (var j = 0; j < 5; j++) {
break outer; // 直接跳出outer所在的外层循环(这个outer是自定义的label)
console.log("内层循环 j 的值:" + j);
}
}
continue:
continue可以用来结束当次循环;
contimue默认的也是作用于离它最近的地方。
本文地址:https://blog.csdn.net/qq_42760119/article/details/107374301
下一篇: 有个女同事以前经常和我去打麻将