1. 程式人生 > >原生js switch語句

原生js switch語句

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         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>

原生js switch語句