JS-switch使用注意事项

2,260 阅读3分钟

语法格式:

switch(n)
{
case 1:
  执行代码块 1
  break;
case 2:
  执行代码块 2
  break;
default:
  n 与 case 1case 2 不同时执行的代码
}

n,通常是一个变量。switch语句中的case值会与n作比较,相等时会执行该case中的代码块。后面跟break,阻塞代码继续向下执行。

var age = 21;
switch(age){
    case age > 60:
        console.log('你所猜的年龄太大了');
        break;
    case age >30:
        console.log('还是有点太大');
        break;
    case age = 21:
        console.log('你猜对了');
        break;
    default:
        console.log('都是错的');
}
//以上语句控制台输出case值 = age = 21 所以输出'你猜对了'

如果在switch语句中不添加break阻塞代码会继续向下执行

var error = 'notice';
switch(error){
    case 'notice':
    case 'haha':
        console.log('提示或警告消息');
        break;
    case 'error':
    default:
        console.log('错误消息');
}
//当case值碰到和error变量的值是一样的时候,还是傻乎乎的往下执行,当碰到break的时候跳出

当所有case的值都没有匹配时,如果你加了default,则会输出默认的消息

var error = 'error';
switch(error){
    case 'notice':
        console.log('提示信息');
        break;
    case 'haha':
        console.log('警告消息');
        break;
    default:
        console.log('错误消息');//输出"错误信息"
}

从以上例子可以看出跟if很相似,那么什么时候该用switch什么时候该用if语句呢?

//if语句
var num = 5;
if(num>7){
    document.write('数字大于7')
}else if(num>6){
    document.write('数字大于6')
}else if(num>5){
    document.write('数字大于5')
}else if(num>4){
    document.write('数字大于4')
}else{
    document.write('前面的条件都不满足')
}
//switch语句
var num = 1;
switch(num){
    case 4 :
    	document.write('数字是4');
        break;
    case 5 :
	    document.write('数字是5');
	    break;
    case 6 :
	    document.write('数字是6');
	    break;
    case 7:
	    document.write('数字是7');
	    break;
    default :
	    alert('前面的条件不满足')
	    break;
}

从上面的例子可以看出

1、当分支较多时,当时用switch的效率是很高的。因为switch是随机访问的,就是确定了选择值之后直接跳转到那个特定的分支,但是if...else是遍历所以得可能值,知道找到符合条件的分支,如此看来switch的效率确实比ifelse要高的多。

2、switch…case只能处理case为常量(是不可以改变的值)的情况,对非常量的情况是无能为力的。例如 if (a > 1 && a < 100),是无法使用switch…case来处理的。所以,switch只能是在常量选择分支时比if...else效率高,但是if...else能应用于更多的场合,if...else比较灵活。

if和switch的区别

if语句:表达式的结果是boolean布尔类型(常用于区间判断)

switch语句:表达式类型不能是boolean布尔类型,可能是byte,int,char,string,枚举(常用于等值判断)

能用switch语句实现的,if语句都能实现,反着不然,如果是区间范围就采用if,如果是等值判断请使用switch

JN还是一个前端小白,文章技术如有什么错误,跪求大佬们指出!!跪谢啦