1. 程式人生 > >JavaScript的分支結構(switch,if..else)

JavaScript的分支結構(switch,if..else)

if else是所有程式語言裡都有的功能,它使得程式具有簡單的判斷能力。

在介紹if之前,讓我們先來了解一下布林值這個概念。

布林(Bool)值

     變數可以用來儲存布林值。布林值的作用就是用來表示“真的假的”。所以布林值其實只有兩種取值:真(true)和假(false)。

if else結構

其實“if…else”的意思和字面意思是一樣的,就是“如果”、“否則”。語法結構如圖:

使用if的例子

1 2 3 4 5 6 7 <script type=“text/JavaScript”>      Var hobby = “VbScript”;      if  (hobby == “JavaScript”)      {
         document.write( "有發展" );      } </script>

我們來解釋一下這段程式碼。首先是一個“if”,它後面緊跟著一個括號,括號裡則是一個條件,確切地說是一個布林值。當條件成立的時候,這個值是true,“{}”裡的語句將會得到執行;否則這個值是flase,“{}”裡的語句將被忽略。

具體到我們的例子,因為hobby 變數的值是“VbScript”,所以不做回答。如果hobby變數的值是“JavaScript”,則回答“有發展”。注意“==”這個符號,這個符號用來判斷左右兩邊是否相等。

如果你的愛好不是JavaScript,那麼沒有任何輸出。如果你希望它能對這種情況做出反應,我們可以請else來幫忙,看下面的程式碼:

1 2 3 4 5 6 7 8 9 10 <script type=“text/JavaScript”>      var  hobby =  "JavaScript"      if  (hobby ==  "JavaScript" )      {          document.write( "有發展" );      } else //如果愛好不是JavaScript      {          document.write( "沒有評價……" );      } </script>

上面的程式碼用到了“else”,它會給if新增一種“否則”的狀態。當hobby不是“JavaScript”的時候,它會表明“沒有評價”。

if else巢狀

如果想做更多的判斷,可以用if的巢狀,巢狀結構圖:

看下面的程式碼。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 <script type=“text/JavaScript”>      var  hobby =  "JavaScript"      if  ( hobby ==  "JavaScript" )      {          document.write( "有發展" );      }      else  if  ( hobby ==  "football" )     //如果愛好是足球。      //注意:這個if是巢狀在上一個if else中的else中的      {          document.write( "我X" );      }      else //既不是JavaScript又不是足球      {          document.write( "沒有評價……" );      } </script>

第二個if只有在第一個if的條件不成立的時候才有機會執行。 

Switch語句

當有很多種選項的時候,switch比if else使用更方便。

上一節我們已經看到,利用if else可以讓程式具有基本的判斷能力,而使用巢狀的if else則可以讓程式對多種情況進行判斷。但是當情況的種類比較多的時候,使用switch語句將更加合適。語法結構圖:

語法定義:

switch(表示式)

{

     case 取值1:

              語句塊1;

              break;

      case 取值2:

              語句塊2;

               break;

      case 取值n:

             語句塊n;

               break;

     defaule:

             語句塊n+1;

             break;

}

 

比如要實現如下功能的程式:輸入一個學生的考試成績,我們按照每十分一個等級將成績分等,程式將根據成績的等級做出不同的評價。

很明顯,用if else可以實現這樣的程式,但是程式碼會很複雜。而如果使用switch語句,程式碼則會簡單一些,首先來看一下思路,再把它翻譯成JavaScript。

思路:

  1. 將分數轉化為特定等級以便於switch處理。

  2. 判斷分數屬於哪種等級。

  3. 據分數等級做出評價:例如低於60給出掛科評價。

翻譯成JavaScript就是如下程式碼(注意註釋):

<script type="text/JavaScript">

    //首先,我們用score變數來儲存分數,假設為65

     var score = 65;

    //用分數除以10,parseInt的作用是把它轉換為整數,

    //暫時不用深究,()內最後的結果為6

     switch (parseInt(score / 10)) {

    //switch開始實現判斷過程,case 6得到滿足

     case 0:

     case 1:

     case 2:

     case 3:

     case 4:

     case 5:

    //根據不同的等級做出不同的行為。

    //冒號後面的語句就是行為

    //case0到5的行為都是下面這個語句

     degree = "恭喜你,又掛了!";

     break;

     case 6:

     degree = "勉強及格";

     break;

     case 7:

     degree = "湊合,湊合"

     break;

     case 8:

     degree = "不錯,不錯";

     break;

     case 9:

     case 10:

     degree = "高手啊,佩服佩服";

     }//end of switch

 </script>

記得在每個case所執行的語句裡新增上一個break語句。為了理解break的作用,我們來看看如果沒有break會怎麼樣:

<script type="text/JavaScript">

     switch (parseInt(score / 10)) {

     case 0:

     case 1:

     case 2:

     case 3:

     case 4:

     case 5:

     degree = "恭喜你,又掛了!";

     case 6:

     degree = "勉強及格";

     case 7:

     degree = "湊合,湊合"

     case 8:

     degree = "8錯,8錯";

     case 9:

     case 10:

     degree = "高手啊,佩服佩服";

     }//end of switch

     </script>

在上面的程式碼中,如果成績是50分,那麼score/10就是5,則case 5後面的語句將會得到執行,同樣,case6、7等等後面的語句都會得到執行。也就是說,我們會得到 恭喜你,又掛了!勉強及格湊合,湊合8錯,8錯高手啊,佩服佩服 這樣沒有意義的結果。這就是swtitch語句的執行邏輯,當發現某個case滿足後,該switch中在該case後的所有語句都會得到執行。第一個例子中的break就是為了讓switch”停下來“。