Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 91精品美女,国产精品高清全国免费观看,中文字幕在线网址

          整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          JavaScript中的switch語句

          avaScript語言中的條件語句,除了if 語句,還有switch 語句。switch 常用于根據不同的條件執行不同的操作。雖然它和 if 語句都是用來判斷條件的語句,但是它們之間還是有不同。

          switch的語法

          語法如下所示:

          switch(expression) {
              case 變量x:
              // 語句1代碼塊
              case 變量y:
              // 語句2代碼塊
              case 變量z:
              // 語句3代碼塊
              break;
              default:
              // 代碼塊
          }
          

          語法解釋:表達式值計算一次,然后我們依次將表達式的值與每一種 case 情況的值進行比較,如果匹配,就會執行與 case 對應的相關代碼塊。

          執行原理:變量 expression 的值與 case 的值進行比較,比如變量 expression 等于 case 變量 x,我們就執行語句1的代碼塊,如果變量 expression 等于 case 變量 y 就執行語句2的代碼塊,依次類推,如果都不符合就執行 default 語句代碼塊。break 語言用于結束當前執行的語句,default 表示默認的,在沒有符合選項的時候默認選擇。

          示例:

          使用 switch 語句來看判斷今天是星期幾,并輸出對應時間。例如在一個 HTML 文件中,寫入下列代碼:

          <!DOCTYPE html>
          <html>
          <head>
          <meta charset="utf-8">
          <title>JS_俠課島(9xkd.com)</title>
          </head>
          <body>
            <div>
              <p id="date"></p>
            </div>
            <script>
              var day;
              var d = new Date().getDay();  
              switch(d) {
                  case 0:
                    day = "星期天";
                    break;
                  case 1:
                    day = "星期一";
                    break;
                  case 2:
                    day = "星期二";
                    break;
                  case 3:
                    day = "星期三";
                    break;
                  case 4:
                    day = "星期四";
                    break;
                  case 5:
                    day = "星期五";
                    break;
                  case 6:
                    day = "星期六";
                    break;
                  case 7:
                    day = "星期天";
                    break;
              }
              document.getElementById("date").innerHTML = day;
              </script>
            </body>    
          </html>
          

          在瀏覽器中打開這個HTML文件,頁面會顯示:

          星期二

          我們來分析一下 <script> 標簽中的 JavaScript 代碼,變量 d 是我們獲取到的當天的星期天數(我寫這個文章的時候是星期二),getDay() 方法會返回與星期相對應的數字,例如星期一返回1、星期二返回2,以此類推。

          然后我們將這個變量 d 作為switch 語句的表達式值,將它與 case 后面的值匹配,如果表達式等于某個 case 后面的值,則執行響應的代碼。例如上述代碼中,變量 d 的值為2,那么就會匹配到 case 2,所對應的代碼就是day = "星期二";,所以輸出結果為星期二。后面還有一個break 語句,這個語句的作用就是跳出 switch 語句,避免同時執行多個case。

          default 關鍵詞

          default 關鍵詞規定 case 匹配不存在時所做的事情。

          示例:

          例如我們看下面這段代碼:

          var level = "P";
          switch(level){
              case "A":
                  console.log("第一類");
                  break;
              case "B":
                  console.log("第二類");
                  break;
              case "C":
                  console.log("第三類");
                  break;
              case "D":
                  console.log("第四類");
                  break;
              default:
                  console.log("其他");
          }
          

          輸出:

          其他
          

          上述代碼中,如果 level 的值不滿足任何 case 的值,則會匹配到 default。代碼中 level 的值為 P,而 case 語句中的值只有A、B、C、D,此時就會匹配到 default 語句,執行 default 語句下面的代碼。

          break 關鍵詞用于跳出 switch 代碼塊。使用 break 能夠節省大量執行時間,因為它會忽略 switch 代碼塊中的其他代碼的執行。

          switch 與 if 的對比

          關于條件分支 switch 和 if 兩者之間的區別和關聯,我們可以通過下面這個表格進行簡單直觀的認識:

          • if 語句表達式的結果是 boolean 布爾類型,常用于區間判斷。
          • switch 表達式類型不能是 boolean 布爾類型,可能是 byte、int、char、string、枚舉,常用于等值判斷。

          注意一般能用 switch 語句實現的就一定能使用 if 語句來實現,但是反過來卻是不一定的,如果區間范圍就采用 if,如果等值判斷就使用 switch。

          效率問題:

          • switch case 會生成一個跳轉表來指示實際的 case 分支地址。
          • switch case 只能處理 case 為常量的情況。
          • if else 需要遍歷條件分支知道命中條件。
          • if else 能應用于更多的場所,比較靈活,但是必須遍歷所有可能的值。

          動手小練習

          1. 寫一個小程序,讓用戶輸入月份,提示相應的季節,如果都不在指定的月份中則輸出"請正確輸入月份"。
          2. 熟記 switch 和 if 的基本內容以及兩者間的關聯與區別。

          多程序都具有switch語句,用于作為菜單功能。當傳入的參數的值等于菜單選項將會執行菜單選項中的內容,但是JavaScript語言具有特殊性有三等(===)和兩等(==)兩種情況,對于JavaScript來說switch使用的是三等呢,還是兩等呢?我們以下面這段程序來進行闡述。

          <!DOCTYPE html>
          <html>
              <head>
                  <title>簡單的switch的使用</title>
                  <meta charset="utf-8">
              </head>
              <body>
                  <script>
                      var a="1";
                      var b=2;
                      function foo(){
                          
                          switch(a){
                              case 1:{
                                  console.log("number 1");
                                  break;
                              }
                              case 2:{
                                  console.log("number 2");
                                  break;
                              }
                              case "1":{
                                  console.log("string 1");
                                  break;
                              }
                              case (function(){return "2"})():{
                                  console.log("value is true");
                                  break;
                              }
                              default:{
                                  console.log("not match");
                                  break;
                              }
                          }
                      }
                      foo();
                  </script>
              </body>
          </html>

          這段程序定義了一個變量其參數自為字符串型的'1',菜單選項中有數字型的選項1和2還有字符串型的參數“1”還有一個變量的表達式以及一個默認的參數選項。

          直接運行這段程序輸出的結果是string 1。

          當修改a的值為字符串“2”時輸出的結果為value is true。

          由上述可以switch的菜單選項使用的是三等需要參數值和參數類型都相等才會執行菜單選項中的值,同時如果菜單選項為一個表達式如果表達式返回的結果和傳入的選項的值相等將會執行表達式后面選項的程序。所以綜上所述switch語句如果菜單語句是表達式如果表達式的值為真將會執行菜單語句中的內容,如果是參數值如果傳入的值的值與菜單中的值是三等則會執行菜單語句中的內容。

          witch語句幾乎是任何一個編程任務里不可缺少的一部分。在本文中,你將學到如何更好的使用switch,并希望你能知道如何情況下我就需要用到它幫我們更好的解決問題。

          何時使用switch其實有個明顯的標志—當你連續書寫了多個if/else語句的時候。下面舉例讓我們看看使用if/else的情況,對比一下我們使用switch語句來完成同樣功能。

          使用if/else語法非常的冗長,包含了很多不必要的重復代碼。switch語法則不這樣:

          可以看出代碼量會有所減少,并且非常清晰易懂。這是因為switch語法強調的點在于對象要去比較可能出現的值,而if/else重點在于條件結果的值。

          使用break

          當JavaScript遍歷整個case分支時,你最好使用break語句來阻斷它。避免匹配上了非預料的、不合適的條件,執行了錯誤的結果。同樣也能幫助引擎過濾掉不必執行的額外代碼。

          在這個例子中,break語句實際上不會起任何作用。例如:如果走case 2分支的情況,那么絕對不會走case 5分支。所以這里break有點點多余。是否嚴格使用break語句的用法有點像是否在表達式末尾使用分號(;)結束一樣,各個開發者都有自己的選擇。有些開發人員在所有case中使用break,有些則策略性的使用break。全面的使用會帶來一點點性能損失。然而,因為就算如果沒有機會會走其他case分支,至少這樣寫不會讓解析引擎走遍所有switch語句。

          策略性使用break

          有些情況你想讓你的cases能夠’fall through’。這時候使用break更像是一種策略,而不是一種安全措施。

          在這個例子中,cases是‘falling through’,break用于顯式的提前退出switch。它表示你將幾個case的條件合并在一起,得到用一個結果。

          如果使用if/else的版本,會使用許多||邏輯判斷,看起來不是特別易懂:

          處理default分支

          Switch的另外一個特性是能夠處理未知的case或一般需要處理的case。回到 我們第一個例子中來,我們使用default來實現錯誤處理:

          你可能注意到了default被加在了最頂部。不用擔心!它可以和你期望的那樣work。因為JavaScript將遍歷所有case分支后才會處理default。

          你同樣能使用default來處理一般情況的case:

          它確保了就算switch語句中沒有匹配到任何你定義的case,也能得到一個有用的值。

          結論

          在你需要寫多個if/else語句代碼塊時,switch語句是一個非常優雅的替代方式。即使你可能不像使用for循環那樣頻繁的使用switch,但在你需要的時候沒有替代品。如今,像lodash和redux這樣的現代庫仍然使用switch。所以更多的在你的JavaScript代碼中使用switch吧!如果你覺得這篇文章對你有幫助,請關注我們前端小號頭條號!~謝謝


          主站蜘蛛池模板: 美女啪啪一区二区三区| 精品国产一区二区三区四区| 人妻无码一区二区不卡无码av| 国产精品日韩欧美一区二区三区| 人妻少妇AV无码一区二区 | 久久久久人妻一区精品性色av| 伊人久久精品一区二区三区| 久久国产午夜一区二区福利| 亚洲一区二区三区AV无码| 丰满岳乱妇一区二区三区| 国产精品成人一区无码 | 日韩社区一区二区三区| 成人免费一区二区无码视频 | 日韩精品一区二区三区毛片| 亚洲综合色一区二区三区| 国产精品久久久久久麻豆一区| 亚洲国产成人一区二区三区| 看电影来5566一区.二区| 日本一区午夜艳熟免费| 制服中文字幕一区二区| 精品久久一区二区| 久久国产精品视频一区| 99精品一区二区三区| 韩国福利影视一区二区三区| 无码精品一区二区三区| 日本免费一区二区三区最新| 免费国产在线精品一区| 成人精品视频一区二区三区| 国产在线精品一区二区在线观看| 另类一区二区三区| av无码免费一区二区三区| 欧美一区内射最近更新| 日本一区二区三区在线视频观看免费 | 成人精品视频一区二区三区不卡| 亚洲一区二区三区无码中文字幕| 蜜桃臀无码内射一区二区三区 | 日本高清不卡一区| 在线播放偷拍一区精品| 国产在线精品一区二区| 精品一区二区三区四区在线| 无码精品视频一区二区三区|