原生js switch語句


一、我們在流判斷的時候,我們大多數的情況我使用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>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM