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

3.1 條件判斷語(yǔ)句

視頻講解

在日常生活中,人們可能會(huì)根據(jù)不同的條件做出不同的選擇。例如,根據(jù)路標(biāo)選擇走哪條路,根據(jù)第二天的天氣情況選擇做什么事情。在編寫(xiě)程序的過(guò)程中也經(jīng)常會(huì)遇到這樣的情況,這時(shí)就需要使用條件判斷語(yǔ)句。所謂條件判斷語(yǔ)句就是對(duì)語(yǔ)句中不同條件的值進(jìn)行判斷,進(jìn)而根據(jù)不同的條件執(zhí)行不同的語(yǔ)句。條件判斷語(yǔ)句主要包括兩類:一類是if語(yǔ)句,另一類是switch語(yǔ)句。下面對(duì)這兩種類型的條件判斷語(yǔ)句進(jìn)行詳細(xì)的講解。

3.1.1 if語(yǔ)句

if語(yǔ)句是最基本、最常用的條件判斷語(yǔ)句,通過(guò)判斷條件表達(dá)式的值來(lái)確定是否執(zhí)行一段語(yǔ)句,或者選擇執(zhí)行哪部分語(yǔ)句。

1.簡(jiǎn)單if語(yǔ)句

在實(shí)際應(yīng)用中,if語(yǔ)句有多種表現(xiàn)形式。簡(jiǎn)單if語(yǔ)句的語(yǔ)法格式如下:

    if(表達(dá)式){
       語(yǔ)句
    }

參數(shù)說(shuō)明。

 表達(dá)式:必選項(xiàng),用于指定條件表達(dá)式,可以使用邏輯運(yùn)算符。

 語(yǔ)句:用于指定要執(zhí)行的語(yǔ)句序列,可以是一條或多條語(yǔ)句。當(dāng)表達(dá)式的值為true時(shí),執(zhí)行該語(yǔ)句序列。

簡(jiǎn)單if語(yǔ)句的執(zhí)行流程如圖3.1所示。

圖3.1 簡(jiǎn)單if語(yǔ)句的執(zhí)行流程

在簡(jiǎn)單if語(yǔ)句中,首先對(duì)表達(dá)式的值進(jìn)行判斷,如果它的值是true,則執(zhí)行相應(yīng)的語(yǔ)句,否則就不執(zhí)行。

例如,根據(jù)比較兩個(gè)變量的值,判斷是否輸出比較結(jié)果。代碼如下:

    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  }

運(yùn)行結(jié)果為:

    a大于b

說(shuō)明

當(dāng)要執(zhí)行的語(yǔ)句為單一語(yǔ)句時(shí),其兩邊的大括號(hào)可以省略。

例如,下面的這段代碼和上面代碼的執(zhí)行結(jié)果是一樣的,都可以輸出“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個(gè)數(shù)字10、20、30分別定義在變量中,應(yīng)用簡(jiǎn)單if語(yǔ)句獲取這3個(gè)數(shù)中的最大值。代碼如下:(實(shí)例位置:資源包\源碼\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;                                         //假設(shè)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+"三個(gè)數(shù)的最大值為"+maxValue);   //輸出結(jié)果
    14  </script>

運(yùn)行結(jié)果如圖3.2所示。

圖3.2 獲取3個(gè)數(shù)中的最大值

2.if…else語(yǔ)句

if…else語(yǔ)句是if語(yǔ)句的標(biāo)準(zhǔn)形式,在if語(yǔ)句簡(jiǎn)單形式的基礎(chǔ)之上增加一個(gè)else從句,當(dāng)表達(dá)式的值是false時(shí)則執(zhí)行else從句中的內(nèi)容。

語(yǔ)法如下:

    if(表達(dá)式){
        語(yǔ)句1
    }else{
        語(yǔ)句2
    }

參數(shù)說(shuō)明。

 表達(dá)式:必選項(xiàng),用于指定條件表達(dá)式,可以使用邏輯運(yùn)算符。

 語(yǔ)句1:用于指定要執(zhí)行的語(yǔ)句序列。當(dāng)表達(dá)式的值為true時(shí),執(zhí)行該語(yǔ)句序列。

 語(yǔ)句2:用于指定要執(zhí)行的語(yǔ)句序列。當(dāng)表達(dá)式的值為false時(shí),執(zhí)行該語(yǔ)句序列。

if...else語(yǔ)句的執(zhí)行流程如圖3.3所示。

圖3.3 if...else語(yǔ)句的執(zhí)行流程

在if語(yǔ)句的標(biāo)準(zhǔn)形式中,首先對(duì)表達(dá)式的值進(jìn)行判斷,如果它的值是true,則執(zhí)行語(yǔ)句1中的內(nèi)容,否則執(zhí)行語(yǔ)句2中的內(nèi)容。

例如,根據(jù)比較兩個(gè)變量的值,輸出比較的結(jié)果。代碼如下:

    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  }

運(yùn)行結(jié)果為:

    a小于b

說(shuō)明

上述if語(yǔ)句是典型的二路分支結(jié)構(gòu)。當(dāng)語(yǔ)句1、語(yǔ)句2為單一語(yǔ)句時(shí),其兩邊的大括號(hào)也可以省略。

例如,上面代碼中的大括號(hào)也可以省略,程序的執(zhí)行結(jié)果是不變的,代碼如下:

    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天。應(yīng)用if…else語(yǔ)句判斷2010年2月份的天數(shù)。代碼如下:(實(shí)例位置:資源包\源碼\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月份的天數(shù)為"+month+"天");   //輸出結(jié)果
    10  </script>

運(yùn)行結(jié)果如圖3.4所示。

圖3.4 輸出2010年2月份的天數(shù)

3.if…else if語(yǔ)句

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

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

if...else if語(yǔ)句的執(zhí)行流程如圖3.5所示。

圖3.5 if...else if語(yǔ)句的執(zhí)行流程

【例3.03】將某學(xué)校的學(xué)生成績(jī)轉(zhuǎn)化為不同等級(jí),劃分標(biāo)準(zhǔn)如下:

① “優(yōu)秀”,大于等于90分。

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

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

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

假設(shè)周星星的考試成績(jī)是85分,輸出該成績(jī)對(duì)應(yīng)的等級(jí)。其關(guān)鍵代碼如下:(實(shí)例位置:資源包\源碼\03\3.03)

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

運(yùn)行結(jié)果如圖3.6所示。

圖3.6 輸出考試成績(jī)對(duì)應(yīng)的等級(jí)

4.if語(yǔ)句的嵌套

if語(yǔ)句不但可以單獨(dú)使用,而且可以嵌套應(yīng)用,即在if語(yǔ)句的從句部分嵌套另外一個(gè)完整的if語(yǔ)句。基本語(yǔ)法格式如下:

    if (表達(dá)式1){
        if(表達(dá)式2){
            語(yǔ)句1
        }else{
            語(yǔ)句2
        }
    }else{
        if(表達(dá)式3){
            語(yǔ)句3
        }else{
            語(yǔ)句4
        }
    }

例如,某考生的高考總分是620,英語(yǔ)成績(jī)是120。假設(shè)重點(diǎn)本科的錄取分?jǐn)?shù)線是600,而英語(yǔ)分?jǐn)?shù)必須在130以上才可以報(bào)考外國(guó)語(yǔ)大學(xué),應(yīng)用if語(yǔ)句的嵌套判斷該考生能否報(bào)考外國(guó)語(yǔ)大學(xué),代碼如下:

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

運(yùn)行結(jié)果如圖3.7所示。

圖3.7 輸出該考生能否報(bào)考外國(guó)語(yǔ)大學(xué)

說(shuō)明

在使用嵌套的if語(yǔ)句時(shí),最好使用大括號(hào){}來(lái)確定相互之間的層次關(guān)系。否則,由于大括號(hào){}使用位置的不同,可能導(dǎo)致程序代碼的含義完全不同,從而輸出不同的內(nèi)容。

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

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

運(yùn)行結(jié)果如圖3.8所示。

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

3.1.2 switch語(yǔ)句

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

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

參數(shù)說(shuō)明。

 表達(dá)式:任意的表達(dá)式或變量。

 常量表達(dá)式:任意的常量或常量表達(dá)式。當(dāng)表達(dá)式的值與某個(gè)常量表達(dá)式的值相等時(shí),就執(zhí)行此case后相應(yīng)的語(yǔ)句;如果表達(dá)式的值與所有的常量表達(dá)式的值都不相等,則執(zhí)行default后面相應(yīng)的語(yǔ)句。

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

switch語(yǔ)句的執(zhí)行流程如圖3.9所示。

圖3.9 switch語(yǔ)句的執(zhí)行流程

說(shuō)明

default語(yǔ)句可以省略。在表達(dá)式的值不能與任何一個(gè)case語(yǔ)句中的值相匹配的情況下,JavaScript會(huì)直接結(jié)束switch語(yǔ)句,不進(jìn)行任何操作。

注意

case后面常量表達(dá)式的數(shù)據(jù)類型必須與表達(dá)式的數(shù)據(jù)類型相同,否則匹配會(huì)全部失敗,而去執(zhí)行default語(yǔ)句中的內(nèi)容。

【例3.05】某公司年會(huì)舉行抽獎(jiǎng)活動(dòng),中獎(jiǎng)號(hào)碼及其對(duì)應(yīng)的獎(jiǎng)品設(shè)置如下:

① “1”代表“一等獎(jiǎng)”,獎(jiǎng)品是“華為手機(jī)”。

② “2”代表“二等獎(jiǎng)”,獎(jiǎng)品是“光波爐”。

③ “3”代表“三等獎(jiǎng)”,獎(jiǎng)品是“電飯煲”。

④其他號(hào)碼代表“安慰獎(jiǎng)”,獎(jiǎng)品是“16G-U盤(pán)”。

假設(shè)某員工抽中的獎(jiǎng)號(hào)為3,輸出該員工抽中的獎(jiǎng)項(xiàng)級(jí)別以及所獲得的獎(jiǎng)品。代碼如下:(實(shí)例位置:資源包\源碼\03\3.05)

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

運(yùn)行結(jié)果如圖3.10所示。

圖3.10 輸出獎(jiǎng)項(xiàng)和獎(jiǎng)品

說(shuō)明

在程序開(kāi)發(fā)的過(guò)程中,使用if語(yǔ)句還是使用switch語(yǔ)句可以根據(jù)實(shí)際情況而定,盡量做到物盡其用,不要因?yàn)閟witch語(yǔ)句的效率高就一味地使用,也不要因?yàn)閕f語(yǔ)句常用就不應(yīng)用switch語(yǔ)句。要根據(jù)實(shí)際的情況,具體問(wèn)題具體分析,使用最適合的條件語(yǔ)句。一般情況下,對(duì)于判斷條件較少的可以使用if條件語(yǔ)句,但是在實(shí)現(xiàn)一些多條件的判斷中,就應(yīng)該使用switch語(yǔ)句。

主站蜘蛛池模板: 湛江市| 西安市| 桐庐县| 广水市| 垦利县| 白沙| 秦皇岛市| 揭阳市| 虹口区| 咸阳市| 崇义县| 沈丘县| 东乌珠穆沁旗| 西丰县| 忻州市| 巴青县| 洞口县| 泗阳县| 南郑县| 平果县| 重庆市| 乐清市| 广南县| 贵溪市| 米林县| 永清县| 盖州市| 苍溪县| 磐安县| 吉安县| 隆德县| 高邑县| 大同县| 白城市| 奉化市| 自治县| 普宁市| 西乡县| 惠州市| 湛江市| 嘉定区|