官术网_书友最值得收藏!

3.1 條件判斷語句

視頻講解

在日常生活中,人們可能會根據不同的條件做出不同的選擇。例如,根據路標選擇走哪條路,根據第二天的天氣情況選擇做什么事情。在編寫程序的過程中也經常會遇到這樣的情況,這時就需要使用條件判斷語句。所謂條件判斷語句就是對語句中不同條件的值進行判斷,進而根據不同的條件執行不同的語句。條件判斷語句主要包括兩類:一類是if語句,另一類是switch語句。下面對這兩種類型的條件判斷語句進行詳細的講解。

3.1.1 if語句

if語句是最基本、最常用的條件判斷語句,通過判斷條件表達式的值來確定是否執行一段語句,或者選擇執行哪部分語句。

1.簡單if語句

在實際應用中,if語句有多種表現形式。簡單if語句的語法格式如下:

    if(表達式){
       語句
    }

參數說明。

 表達式:必選項,用于指定條件表達式,可以使用邏輯運算符。

 語句:用于指定要執行的語句序列,可以是一條或多條語句。當表達式的值為true時,執行該語句序列。

簡單if語句的執行流程如圖3.1所示。

圖3.1 簡單if語句的執行流程

在簡單if語句中,首先對表達式的值進行判斷,如果它的值是true,則執行相應的語句,否則就不執行。

例如,根據比較兩個變量的值,判斷是否輸出比較結果。代碼如下:

    01  var a=200;                    //定義變量a,值為200
    02  var b=100;                    //定義變量b,值為100
    03  if(a>b){                      //判斷變量a的值是否大于變量b的值
    04     document.write("a大于b");  //輸出a大于b
    05  }
    06  if(a<b){                      //判斷變量a的值是否小于變量b的值
    07     document.write("a小于b");  //輸出a小于b
    08  }

運行結果為:

    a大于b

說明

當要執行的語句為單一語句時,其兩邊的大括號可以省略。

例如,下面的這段代碼和上面代碼的執行結果是一樣的,都可以輸出“a大于b”。

    01  var a=200;                    //定義變量a,值為200
    02  var b=100;                    //定義變量b,值為100
    03  if(a>b)                       //判斷變量a的值是否大于變量b的值
    04     document.write("a大于b");  //輸出a大于b
    05  if(a<b)                       //判斷變量a的值是否小于變量b的值
    06     document.write("a小于b");  //輸出a小于b

【例3.01】將3個數字10、20、30分別定義在變量中,應用簡單if語句獲取這3個數中的最大值。代碼如下:(實例位置:資源包\源碼\03\3.01)

    01  <script type="text/javascript">
    02  var a,b,c,maxValue;                                 //聲明變量
    03  a=10;                                               //為變量賦值
    04  b=20;                                               //為變量賦值
    05  c=30;                                               //為變量賦值
    06  maxValue=a;                                         //假設a的值最大,定義a為最大值
    07  if(maxValue<b){                                     //如果最大值小于b
    08     maxValue=b;                                      //定義b為最大值
    09  }
    10  if(maxValue<c){                                     //如果最大值小于c
    11     maxValue=c;                                      //定義c為最大值
    12  }
    13  alert(a+"、"+b+"、"+c+"三個數的最大值為"+maxValue);   //輸出結果
    14  </script>

運行結果如圖3.2所示。

圖3.2 獲取3個數中的最大值

2.if…else語句

if…else語句是if語句的標準形式,在if語句簡單形式的基礎之上增加一個else從句,當表達式的值是false時則執行else從句中的內容。

語法如下:

    if(表達式){
        語句1
    }else{
        語句2
    }

參數說明。

 表達式:必選項,用于指定條件表達式,可以使用邏輯運算符。

 語句1:用于指定要執行的語句序列。當表達式的值為true時,執行該語句序列。

 語句2:用于指定要執行的語句序列。當表達式的值為false時,執行該語句序列。

if...else語句的執行流程如圖3.3所示。

圖3.3 if...else語句的執行流程

在if語句的標準形式中,首先對表達式的值進行判斷,如果它的值是true,則執行語句1中的內容,否則執行語句2中的內容。

例如,根據比較兩個變量的值,輸出比較的結果。代碼如下:

    01  var a=100;                    //定義變量a,值為100
    02  var b=200;                    //定義變量b,值為200
    03  if(a>b){                      //判斷變量a的值是否大于變量b的值
    04     document.write("a大于b");  //輸出a大于b
    05  }else{
    06     document.write("a小于b");  //輸出a小于b
    07  }

運行結果為:

    a小于b

說明

上述if語句是典型的二路分支結構。當語句1、語句2為單一語句時,其兩邊的大括號也可以省略。

例如,上面代碼中的大括號也可以省略,程序的執行結果是不變的,代碼如下:

    01 var a=100;                      //定義變量a,值為100
    02 var b=200;                      //定義變量b,值為200
    03 if(a>b)                         //判斷變量a的值是否大于變量b的值
    04    document.write("a大于b");  //輸出a大于b
    05 else
    06    document.write("a小于b");  //輸出a小于b

【例3.02】如果某一年是閏年,那么這一年的2月份就有29天,否則這一年的2月份就有28天。應用if…else語句判斷2010年2月份的天數。代碼如下:(實例位置:資源包\源碼\03\3.02)

    01  <script type="text/javascript">
    02  var year=2010;                                //定義變量
    03  var month=0;                                  //定義變量
    04  if((year%4==0 && year%100!=0)||year%400==0){   //判斷指定年是否為閏年
    05     month=29;                              //為變量賦值
    06  }else{
    07     month=28;                              //為變量賦值
    08  }
    09  alert("2010年2月份的天數為"+month+"天");   //輸出結果
    10  </script>

運行結果如圖3.4所示。

圖3.4 輸出2010年2月份的天數

3.if…else if語句

if語句是一種使用很靈活的語句,除了可以使用if...else語句的形式,還可以使用if...else if語句的形式。這種形式可以進行更多的條件判斷,不同的條件對應不同的語句。if...else if語句的語法格式如下:

    if (表達式1){
        語句1
    }else if(表達式2){
        語句2
    }
    …
    else if(表達式n){
        語句n
    }else{
        語句n+1
    }

if...else if語句的執行流程如圖3.5所示。

圖3.5 if...else if語句的執行流程

【例3.03】將某學校的學生成績轉化為不同等級,劃分標準如下:

① “優秀”,大于等于90分。

② “良好”,大于等于75分。

③ “及格”,大于等于60分。

④ “不及格”,小于60分。

假設周星星的考試成績是85分,輸出該成績對應的等級。其關鍵代碼如下:(實例位置:資源包\源碼\03\3.03)

    01  <script type="text/javascript">
    02  var grade = "";                   //定義表示等級的變量
    03  var score = 85;                   //定義表示分數的變量score值為85
    04  if(score>=90){                    //如果分數大于等于90
    05     grade = "優秀";                //將"優秀"賦值給變量grade
    06  }else if(score>=75){              //如果分數大于等于75
    07     grade = "良好";                //將"良好"賦值給變量grade
    08  }else if(score>=60){              //如果分數大于等于60
    09     grade = "及格";                //將"及格"賦值給變量grade
    10  }else{                            //如果score的值不符合上述條件
    11     grade = "不及格";              //將"不及格"賦值給變量grade
    12  }
    13  alert("周星星的考試成績"+grade);  //輸出考試成績對應的等級
    14  </script>

運行結果如圖3.6所示。

圖3.6 輸出考試成績對應的等級

4.if語句的嵌套

if語句不但可以單獨使用,而且可以嵌套應用,即在if語句的從句部分嵌套另外一個完整的if語句。基本語法格式如下:

    if (表達式1){
        if(表達式2){
            語句1
        }else{
            語句2
        }
    }else{
        if(表達式3){
            語句3
        }else{
            語句4
        }
    }

例如,某考生的高考總分是620,英語成績是120。假設重點本科的錄取分數線是600,而英語分數必須在130以上才可以報考外國語大學,應用if語句的嵌套判斷該考生能否報考外國語大學,代碼如下:

    01  var totalscore=620;                                           //定義總分變量
    02  var englishscore=120;                                         //定義英語分數變量
    03  if(totalscore>600){                                           //如果總分大于600
    04      if(englishscore>130){                                     //如果英語分數大于130
    05          alert("該考生可以報考外國語大學");                     //輸出字符串
    06      }else{
    07          alert("該考生可以報考重點本科,但不能報考外國語大學");  //輸出字符串
    08      }
    09  }else{
    10      if(totalscore>500){                                        //如果總分大于500
    11          alert("該考生可以報考普通本科");                        //輸出字符串
    12      }else{
    13          alert("該考生只能報考專科");                            //輸出字符串
    14      }
    15  }

運行結果如圖3.7所示。

圖3.7 輸出該考生能否報考外國語大學

說明

在使用嵌套的if語句時,最好使用大括號{}來確定相互之間的層次關系。否則,由于大括號{}使用位置的不同,可能導致程序代碼的含義完全不同,從而輸出不同的內容。

【例3.04】假設某工種的男職工60歲退休,女職工55歲退休,應用if語句的嵌套來判斷一位58歲的女職工是否已經退休。代碼如下:(實例位置:資源包\源碼\03\3.04)

    01  <script type="text/javascript">
    02  var sex="女";                                   //定義表示性別的變量
    03  var age=58;                                     //定義表示年齡的變量
    04  if(sex=="男"){                                  //如果是男職工就執行下面的內容
    05     if(age>=60){                                 //如果男職工在60歲以上
    06        alert("該男職工已經退休"+(age-60)+"年");  //輸出字符串
    07     }else{                                       //如果男職工在60歲以下
    08        alert("該男職工并未退休");                //輸出字符串
    09     }
    10  }else{                                          //如果是女職工就執行下面的內容
    11     if(age>=55){                                 //如果女職工在55歲以上
    12        alert("該女職工已經退休"+(age-55)+"年");  //輸出字符串
    13     }else{                         //如果女職工在55歲以下
    14        alert("該女職工并未退休");  //輸出字符串
    15     }
    16  }
    17  </script>

運行結果如圖3.8所示。

圖3.8 輸出該女職工是否已退休

3.1.2 switch語句

switch是典型的多路分支語句,其作用與if...else if語句基本相同,但switch語句比if...else if語句更具有可讀性,它根據一個表達式的值,選擇不同的分支執行。而且switch語句允許在找不到一個匹配條件的情況下執行默認的一組語句。switch語句的語法格式如下:

    switch (表達式){
        case 常量表達式1:
            語句1;
            break;
        case 常量表達式2:
            語句2;
            break;
          …
        case 常量表達式n:
            語句n;
            break;
        default:
            語句n+1;
            break;
    }

參數說明。

 表達式:任意的表達式或變量。

 常量表達式:任意的常量或常量表達式。當表達式的值與某個常量表達式的值相等時,就執行此case后相應的語句;如果表達式的值與所有的常量表達式的值都不相等,則執行default后面相應的語句。

 break:用于結束switch語句,從而使JavaScript只執行匹配的分支。如果沒有了break語句,則該匹配分支之后的所有分支都將被執行,switch語句也就失去了使用的意義。

switch語句的執行流程如圖3.9所示。

圖3.9 switch語句的執行流程

說明

default語句可以省略。在表達式的值不能與任何一個case語句中的值相匹配的情況下,JavaScript會直接結束switch語句,不進行任何操作。

注意

case后面常量表達式的數據類型必須與表達式的數據類型相同,否則匹配會全部失敗,而去執行default語句中的內容。

【例3.05】某公司年會舉行抽獎活動,中獎號碼及其對應的獎品設置如下:

① “1”代表“一等獎”,獎品是“華為手機”。

② “2”代表“二等獎”,獎品是“光波爐”。

③ “3”代表“三等獎”,獎品是“電飯煲”。

④其他號碼代表“安慰獎”,獎品是“16G-U盤”。

假設某員工抽中的獎號為3,輸出該員工抽中的獎項級別以及所獲得的獎品。代碼如下:(實例位置:資源包\源碼\03\3.05)

    01  <script type="text/javascript">
    02  var grade="";                    //定義表示獎項級別的變量
    03  var prize="";                    //定義表示獎品的變量
    04  var code=3;                      //定義表示中獎號碼的變量值為3
    05  switch(code){
    06      case 1:                      //如果中獎號碼為1
    07        grade="一等獎";            //定義獎項級別
    08        prize="華為手機";          //定義獲得的獎品
    09        break;                     //退出switch語句
    10      case 2:                      //如果中獎號碼為2
    11        grade="二等獎";            //定義獎項級別
    12        prize="光波爐";            //定義獲得的獎品
    13        break;                     //退出switch語句
    14      case 3:                      //如果中獎號碼為3
    15        grade="三等獎";                                    //定義獎項級別
    16        prize="電飯煲";                                    //定義獲得的獎品
    17        break;                                             //退出switch語句
    18     default:                                              //如果中獎號碼為其他號碼
    19        grade="安慰獎";                                    //定義獎項級別
    20        prize="16G-U盤";                                   //定義獲得的獎品
    21        break;                                             //退出switch語句
    22  }
    23  document.write("該員工獲得了"+grade+"<br>獎品是"+prize); //輸出獎項級別和獲得的獎品
    24  </script>

運行結果如圖3.10所示。

圖3.10 輸出獎項和獎品

說明

在程序開發的過程中,使用if語句還是使用switch語句可以根據實際情況而定,盡量做到物盡其用,不要因為switch語句的效率高就一味地使用,也不要因為if語句常用就不應用switch語句。要根據實際的情況,具體問題具體分析,使用最適合的條件語句。一般情況下,對于判斷條件較少的可以使用if條件語句,但是在實現一些多條件的判斷中,就應該使用switch語句。

主站蜘蛛池模板: 罗城| 临湘市| 乌兰察布市| 施秉县| 淳化县| 刚察县| 稻城县| 河南省| 陈巴尔虎旗| 右玉县| 岳阳县| 介休市| 延安市| 会昌县| 恭城| 化德县| 紫金县| 车险| 渑池县| 闻喜县| 当阳市| 闻喜县| 揭东县| 乌鲁木齐县| 大方县| 胶州市| 屯留县| 哈尔滨市| 弥渡县| 通榆县| 遂川县| 武城县| 德州市| 巴林左旗| 安阳县| 秭归县| 东兰县| 汝南县| 平和县| 金湖县| 湄潭县|