1、咱们在流判断的时候,咱们大多数的状况我使用if else 语句。可是对于一些大量的逻辑的判断的时候,咱们不建议使用if elseif语句 这种语句的效率执行不高,由于他每一个expression 都须要进行计算判断,而switch case语句,在效率上更比if语句更高javascript
其原理他自己根据生成的静态表,经过索引进行匹配效率高于if语句。html
执行流程:java
switch (expression){express
case value1:spa
statementcode
breakhtm
case value2:blog
statement索引
breakip
.......
default:
statement
}
首先执行switch内的expression,计算值,而后进行case进行判断。匹配到case,执行对应的statement 若是有break,则跳出switch语句,若是没有则执行剩下的case语句,最后执行default 内的语句。若是带有break的,当匹配执行完case的时候,不会执行default 语句。若是
没有匹配到case最后执行default语句。
须要注意:switch语句的case匹配是全等匹配。不存在类型转换这点不一样于if语句。
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <title></title> 5 </head> 6 <body> 7 <script type="text/javascript"> 8 var date=new Date(); 9 switch(date.getDate()){ 10 case 1: 11 alert(1); 12 case 2: 13 alert(2); 14 case 3: 15 alert(3); 16 case 4: 17 alert(4) 18 case 5: 19 alert(5) 20 default: 21 alert('default') 22 } 23 </script> 24 </body> 25 </html>
如上switch语句,若是没有break的语句。在执行完的匹配的执行语句的时候,还会执行default语句。
加上break则匹配到case语句以后,不会执行default语句。此时default语句至关于if中的else部分。
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <title></title> 5 </head> 6 <body> 7 <script type="text/javascript"> 8 var date=new Date(); 9 switch(date.getDate()){ 10 case 1: 11 alert(1); 12 break; 13 case 2: 14 alert(2); 15 break; 16 case 3: 17 alert(3); 18 break; 19 case 4: 20 alert(4); 21 break; 22 case 5: 23 alert(5); 24 break; 25 default: 26 alert('default') 27 } 28 </script> 29 </body> 30 </html>
通常的状况下 咱们会用switch作一些值 的判断,固然咱们能够进行逻辑的判断:
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <title></title> 5 </head> 6 <body> 7 <script type="text/javascript"> 8 var num=24; 9 switch(true){ 10 case num>24: 11 alert("大于24!"); 12 break; 13 case num<24&&num>20: 14 alert("大约20,小于24!"); 15 break; 16 case num===24: 17 alert("等于24"); 18 break; 19 default: 20 alert("判断不了") 21 } 22 </script> 23 </body> 24 </html>