JavaScript核心语法学习部分(四)
①switch-case语句
switch...case... 多条分支,根据条件判断,选择执行。
语法:
switch(表达式){
case 表达式1://如果表达式的值===表达式1的值就执行代码段1;
代码段1;
case 表达式2:
代码段2;
case 表达式n:
代码段n;
default://如果表达式的值和所有的case都不相等,执行默认代码段;
默认代码段;
}
流程结构图:
案例:分段显示分数
1 var score=parseInt(prompt("请输入分数:")); 2 switch (true){ 3 case score>=90: 4 console.log("A"); 5 case score>=80: 6 console.log("B"); 7 case score>=60: 8 console.log("C"); 9 default: 10 console.log("D"); 11 }
运行机制:如果找到与表达式值匹配的case,不但执行当前case下的代码,而且之后所有代码都被触发。
break:退出当前结构;
不加break:多个条件共用同一套执行逻辑时。
注意:表达式的值和条件值是严格相等。
案例1:switch...case语句
1 var num=parseInt(prompt("请输入服务种类:")); 2 switch (num){ 3 case 1: 4 console.log("余额查询中"); 5 break; 6 case 2: 7 console.log("取款进行中"); 8 break; 9 case 3: 10 console.log("转账进行中"); 11 break; 12 default: 13 }
如果将parseInt去掉,或者是在case后面的值加上双引号,不会输出,严格相等包含值相等和数据类型相等。
案例2:if else 语句实现
1 var num=parseInt(prompt("请输入服务种类:")); 2 if(num===1){ 3 console.log("余额查询中") 4 }else if(num===2){ 5 console.log("取款进行中") 6 }else if (num===3){ 7 console.log("转账进行中") 8 }else{ 9 console.log("您输入的有误,请重新输入") 10 };
②循环结构
循环结构:程序反复执行同一套代码段,但是遇到结束条件会结束执行。如果没有循环条件,永远循环执行——死循环
循环结构三要素:
a.循环条件——重复执行的次数,或者继续执行循环的条件。一旦循环条件不满足,循环立即退出!
b.循环变量——用于循环条件中做判断的变量,循环变量都会想循环退出的趋势变化(不满足循环条件的趋势)——循环计数器
c.循环体——要执行的相同或相似的语句,即每次循环要做的事情。
while循环
当满足条件时,就继续循环做...事情。
语法:
var 循环变量;
while(循环条件){
循环体;
迭代变化循环变量;
}
break:用户循环体中跳出循环,退出当前结构。
while何时使用break:循环条件不满足之前,希望强行退出循环。
如何使用break?客户放在任何需要退出循环的位置。
案例1:小火车转圈
1 var round=0; 2 while(round<3){ 3 if(round==2){ 4 console.log("晕"); 5 break; 6 } 7 console.log("转一圈"); 8 round+=1; 9 } 10 console.log("停车");
案例2:猜数游戏
1 var n=10 2 var input=-1 3 while(input!=n){ 4 input=prompt("请输入数字:") 5 if(input!=""){ 6 if(input=="exit"){ 7 console.log("放弃了") 8 break; 9 }else{ 10 input=parseInt(input); 11 if(n>input){ 12 alert("您输入小了"); 13 }else if(n<input){ 14 alert("您输入大了"); 15 }else{ 16 alert("恭喜您猜对了") 17 } 18 } 19 } 20 };
随机数:Math.random():0<=n<1
任意min——max取随机数
公式:parseInt(Math.random()*(man-min+1)+min)
案例3:猜数游戏(答案不固定)
1 var n=parseInt(Math.random()*(10-0+1)+0); 2 var input=-1 3 while(input!=n){ 4 input=prompt("请输入数字:") 5 if(input!=""){ 6 if(input=="exit"){ 7 console.log("放弃了") 8 break; 9 }else{ 10 input=parseInt(input); 11 if(n>input){ 12 alert("您输入小了"); 13 }else if(n<input){ 14 alert("您输入大了"); 15 }else{ 16 alert("恭喜您猜对了") 17 } 18 } 19 } 20 };
do while循环
语法:
var 循环变量;
do{
循环体;
迭代变换循环变量;
}while(循环条件);
do-while循环:先执行一次循环体,再判断是否继续!
如果循环条件不满足,循环体至少可以执行一次!
案例:猜数字游戏
1 var n=parseInt(Math.random()*(10-0+1)+0); 2 var input=-1 3 do{input=prompt("请输入数字:") 4 if(input!=""){ 5 if(input=="exit"){ 6 console.log("放弃了") 7 break; 8 }else{ 9 input=parseInt(input); 10 if(n>input){ 11 alert("您输入小了"); 12 }else if(n<input){ 13 alert("您输入大了"); 14 }else{ 15 alert("恭喜您猜对了") 16 } 17 } 18 } 19 } 20 while(input!=n);
说明:var放在{}内外均可,因为此变量是全局作用域。作用域只分为全局作用域和函数作用域,此处没有函数。
变量声明提前:相同作用域内,var无论出现在什么位置,解析时优先提取到js开始位置声明!
while vs do-while:
如果第一次条件就可能不满足,也想执行一次,必须用do-while
如果第一次条件一定满足,while等同于do while
for循环:
完全等效于while循环。
循环变量变化规律固定,循环次数已知/固定。
语法:
for(声明并初始化循环变量;循环条件;迭代循环变量){
循环体;
}
案例1:1+2+3+...+100计算写法1
1 for(var i=1,sum=0;i<=100;i++){ 2 sum+=i; 3 } 4 console.log(sum);
案例2:1+2+3+...+100计算写法2
1 for(var i=1,sum=0;i<=100;sum+=i++){ 2 } 3 console.log(sum);
break;用于强行退出当前结构;
continue:跳过本轮循环,继续执行下一轮循环。
案例1:从2000年开始找出5个闰年
1 var count=0; 2 var year=2000; 3 while(count<5){ 4 if((year%4==0&&year%100!=0)||(year%400==0)){ 5 console.log(year); 6 count++; 7 } 8 year++; 9 };
案例2:打印九九乘法表
1 for(var n=1;n<=9;n++){ 2 var str=""; 3 for(var i=1;i<=n;i++){ 4 str+=i+"*"+n+"="+(i*n)+" "; 5 } 6 console.log(str); 7 };
案例3:计算平均数(要求输入班级分数,输入-1停止并打印平均分数)
1 var sum=0; 2 var count=0; 3 do{var input=parseInt(prompt("请输入成绩:")); 4 if(input=="-1"){ 5 break; 6 }else{ 7 count++; 8 sum+=input; 9 } 10 }while(true); 11 console.log("平均分:"+(sum/count).toFixed(2));
案例4:“水仙花数”查找(在100到999查找水仙花数)
1 for(var num=100;num<=999;num++){ 2 var hd=parseInt(num/100); 3 var ten=parseInt(num%100/10); 4 var one=num%10; 5 if(num==hd*hd*hd+ten*ten*ten+one*one*one){ 6 console.log(num); 7 } 8 };