例子
if语句
var mon = +(window.prompt("请输入1~12的某一个月份"));
if(!(mon>=1 && mon<=12)){
alert("没有")
}else{
if(mon==3 || mon==4 || mon==5){
alert("春季");
}else if(mon==5 || mon==7 || mon==8){
alert("夏季");
}else if(mon==9 || mon==10 || mon==11){
alert("秋季");
}else if(mon==12 || mon==1 || mon==2){
alert("冬季");
}
}
switch语句
var mon = +(window.prompt("请输入1~12的某一个月份"));
switch(mon){
case 12:
case 1:
case 2:
console.log("冬季");
break;
case 3:
case 4:
case 5:
console.log("春季");
break;
case 6:
case 7:
case 8:
console.log("夏季");
break;
case 9:
case 10:
case 11:
console.log("秋季");
break;
default:
console.log("没有");
break;
}
从上面的例子可以看出
1、分支比较多且无法穷尽时最好用 if, 其它情况可以按照个人习惯
2、如果数据量不是很大, 并且数据是固定的可以用Switch
3、理论上Switch的效率比if高
if和switch的区别
if语句:表达式的结果是boolean布尔类型(常用于区间判断)
switch语句:表达式类型不能是boolean布尔类型,枚举(常用于等值判断)
语句的选择
能用 switch语句实现的就一定可以使用 if来实现,但是反之不一定,如果是区间范围就采用 if,如果是等值判断请使用 switch
switch case与if else的效率问题
1.switch case与if else的区别:switch case会生成一个跳转表来指示实际的case分支的地址,而if…else却需要遍历条件分支直到命中条件,
switch case的优缺点
(1)switch case的优点:
当分支较多时,用switch的效率是很高的。因为switch是确定了选择值之后直接跳转到那个特定的分支.
(2)switch case的缺点:
switch…case占用较多的代码空间,因为它要生成跳表,特别是当case常量分布范围很大但实际有效值又比较少的情况,switch…case的空间利用率将变得很低。
if else的优缺点
(1)if else的优点:if else能应用于更多的场所以if else比较灵活。
(2)if else的缺点:if else必须遍历所以得可能值。
总结:
在选择分支较多时,选用 switch…case结构会提高程序的效率,但 switch不足的地方在于只能处理字符或者数字类型的变量,if…else结构更加灵活一些,if…else结构可以用于判断表达式是否成立,比如 if(a+b>c),if…else的应用范围更广,switch…case结构在某些情况下可以替代 if…else结构。
switch不加break为什么具有直通性?
用break的作用就是跳出switch,不执行其他的case,如果不加就一直走下去,一直等到下一个break后跳出,如果一直没有break,就要等到switch结束后退出。