工作原理:switch首先设置表达式 n(通常是一个变量)。随后表达式的值会与结构中的每个 case 的表达式值做比较。如果存在匹配,则与该 case 关联的代码块会被执行。请使用 break 来阻止代码自动地向下一个 case 运行。
具体执行过程:
//具体的执行,就是这样
//1. 计算switch小括号里面的表达式,得出结果a
//2. 计算case后边的表达式,得出结果b
//3. 进行验证 a === b 如果相等,则执行case,否则跳过这个case,继续2步骤
//4. 强制中断switch语句可以用return , break这俩个关键字在case后边的执行语句里,
// 可以跳出switch的验证
//加上break语句
//这样,只要有一次可以匹配通过,就会跳出其他的判断条件和if else if else 差不多
实例1:
1.
var id = 2;
var s = 1;
switch(id){//计算id的值
case 2://计算常量
alert('2 true');
case 1 + 1://计算数字相加
alert('1 + 1 true');
case 1 * 2://计算数字相乘
alert('1 * 2 true');
case s * 2://计算变量
alert('s * 2 true');
default : //默认执行
alert('default');
}
2.
switch(id){//计算id的值
case 2://计算常量
alert('2 true');
break;
case 1 + 1://计算数字相加
alert('1 + 1 true');
break;
case 1 * 2://计算数字相乘
alert('1 * 2 true');
return ;//return也可以中断switch的case,并且会将整个方法中断
case s * 2://计算变量
alert('s * 2 true');
break;
default : //默认执行
alert('default');
}
3.
function type(obj){
switch(typeof obj){
case 'string' :
return 'string';
case 'function':
return 'function';
case 'object':
return 'object';
case 'number':
return 'number';
}
}
实例2:
1.
function case1(num){
switch(num){
case 1:
document.writeln("show 1!!");
break;
case 2:
document.writeln("show 2!!");
break;
case 3:
document.writeln("show 3!!");
break;
default:
document.writeln("show others!!");
break;
}
}
2.
function case2(num){
switch(num){
case 1:
document.writeln("show 1!!"); //沒有break,所以會繼續執行case 2
case 2:
document.writeln("show 2!!");
break;
case 3:
document.writeln("show 3!!"); //沒有break,所以會繼續執行case 4
case 4:
document.writeln("show 4!!");
break;
default:
document.writeln("show others!!");
break;
}
}
3.
function case3(num){
switch(num){
case 1:
case 2: //相當於if(num==1 || num==2)
document.writeln("show 1 or 2!!");
break;
case 3:
case 4: //相當於if(num==3 || num==4)
document.writeln("show 3 or 4!!");
break;
default: //相當於else
document.writeln("show others!!");
break;
}
}
4.
function case4(num){
switch(f(num)){
case 1:
case 2: //相當於if(num==1 || num==2)
document.writeln("show 1 or 2!!");
break;
case 3:
case 4: //相當於if(num==3 || num==4)
document.writeln("show 3 or 4!!");
break;
default: //相當於else
document.writeln("show others!!");
break;
}
}
5.
function case5(num){
switch(num<=2){ //case可以为表达式
case true:
document.writeln("num <= 2");
break;
case false:
document.writeln("num > 2");
break;
}
}
6.//表示一个范围
function case6(x){
switch(true){
case x>0&&x<10:
alert(1);
break;
case x>=10&&x<20:
alert(2);
break;
}
}
又如比如表示范围90~100,
function case7(num){
switch(true){
case num>90&&num<100:
alert("hello");
break;
}
}