原生js switch語句
阿新 • • 發佈:2018-10-05
class doctype span exp ava ... 通過 tex 不同
一、我們在流判斷的時候,我們大多數的情況我使用if else 語句。但是對於一些大量的邏輯的判斷的時候,我們不建議使用if elseif語句 這種語句的效率執行不高,因為他每個expression 都需要進行計算判斷,而switch case語句,在效率上更比if語句更高
其原理他本身根據生成的靜態表,通過索引進行匹配效率高於if語句。
執行流程:
switch (expression){
case value1:
statement
break
case value2:
statement
break
.......
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 case1: 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>
原生js switch語句