2. 流程控制
2.1 if分支
- if 结构:
if(条件){代码块}
// 案例1:输入一个年龄,判断是否成年?若成年输出”成年“即可varage1=prompt('请输入年龄');if(age1>=18){alert('您的年龄为'+age1+',您已成年');}- if-else 结构:
if(条件){代码块1}else{代码块2}
// 案例2:输入一个年龄,判断是否成年?若成年输出”成年“,否则输出”未成年“varage2=prompt('请输入年龄');if(age2>=18){alert('您的年龄为'+age2+',您已成年');}else{alert('您的年龄为'+age2+',您未成年');}- else if 结构:
if(条件){代码块}……else if(条件n){代码n}else{代码块n+1}
// 案例3:输入一个年龄及等级,判断当前年龄是否成年,若未成年则免费入园,如果成年且VIP等级大于3也免费入园,否则需缴纳90元门票varage3=prompt('请输入年龄');varlevel3=prompt('请输入等级');if(age3<18){alert('您的年龄为'+age3+',您未成年,免费入园');}elseif(age3>=18&&level3>3){alert('您的年龄为'+age3+',您已成年,VIP等级大于3,免费入园');}else{alert('您的年龄为'+age3+',您已成年,VIP等级小于等于3,需缴纳90元门票');}2.2 switch分支
格式:
switch(key){
case 表达式1:
代码1;
break;
case 表达式2:
代码2;
break; ……
case 表达式n:
代码n;
break;
default:
代码 n+1;
}
- 规则
- switch-case 结构中,switch 括号中匹配的 key 匹配 case 后的 value,若匹配上则执行 case 中的代码;若没匹配上则执行 default 中的内容,如果没有 default 则不执行任何内容,default 为最终出口。
- key 和 value 都可以为表达式(计算的结果),也可以为具体的数据内容。
- break 可以不写,但若匹配到的 case 无 break,则会继续向下执行下一个 case,直到遇到具备 break 的 case为止,或执行到最终出口 default。
- switch 的运行速度比 if 分支快,因此推荐在合适时尽量使用 switch。
// 案例1:输入一个等级,判断等级是否为1、2、3、4、5varlevel=prompt('请输入等级');switch(level){case'1':alert('您的等级为1');break;case'2':alert('您的等级为2');break;case'3':alert('您的等级为3');break;case'4':alert('您的等级为4');break;case'5':alert('您的等级为5');break;default:alert('您输入的等级有误');}2.3 while循环
- while:while(循环条件){循环体}
// 案例1:输出3次“hello JS”vari=0;while(i<3){alert('hello JS');i++;}// 案例2:自造死循环(利大于弊,应用:程序的运行 弊端:造成内容大量使用而造成资源浪费)while(1>0){alert('hello world');}// 案例3:输出1-100之间的和i=0;varsum=0;while(i<=100){sum+=i;i++;}console.log("1-100之间的和为:"+sum);// 案例4:输出1-100之间的偶数和i=0;sum=0;while(i<=100){if(i%2==0){sum+=i;}i++;}console.log("1-100之间的偶数和为:"+sum);// 案例5:计算1-100之间的和,当i为50时,终止循环i=0;sum=0;while(i<=100){if(i==50){break;}sum+=i;i++;}console.log("1-100之间的和为:"+sum);// 案例6:计算1-100之间的和,当i为50时,跳过50,继续循环计算i=0;sum=0;while(i<=100){if(i==50){i++;continue;}sum+=i;i++;}console.log("1-100之间的和,跳过50为:"+sum);- do-while:do{循环体}while(循环条件)
// 案例:输入用户名和密码判断是否登陆成功,否则重新输入do{varusername=prompt("用户名:")varpassword=prompt("密码:")}while(username!="张三"||password!="123")- while 和 do-while 的区别:do-while 无论条件满足或不满足,都会执行至少一次的循环体
break:跳出所有循环
continue:跳出单次循环
2.4 for循环
- 格式:
for(循环变量;循环条件;循环变量变化){循环体}
<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width, initial-scale=1.0"><title>for循环</title></head><body></body></html><script>// 案例1:死循环// for(;;){循环体}// 案例2:计算0-100的和varsum=0;for(leti=0;i<101;i++){sum+=i;}console.log("0-100的和为:"+sum);// 案例3:for循环的变形:循环变量和其变化可以改变位置,但两个分号不能动sum=0;leti=0;for(;i<101;){sum+=i;i++;}console.log("0-100的和为:"+sum);// 案例4:for循环嵌套(九九乘法表打印)for(leti=1;i<=9;i++){for(letj=1;j<=i;j++){console.log(i+" * "+j+" = "+i*j);}}</script>