- JavaScript從入門到精通(第3版)
- 明日科技
- 2057字
- 2020-03-20 10:37:30
3.2 條件判斷語句
所謂條件判斷語句,就是對語句中不同條件的值進(jìn)行判斷,進(jìn)而根據(jù)判斷結(jié)果執(zhí)行不同的操作。條件判斷語句主要包括兩類:一類是if判斷語句,另一類是switch多分支語句。下面對這兩種類型的語句進(jìn)行詳細(xì)的講解。
3.2.1 簡單if語句
if條件判斷語句是最基本、最常用的流程控制語句,可以根據(jù)條件表達(dá)式的值執(zhí)行相應(yīng)的處理。簡單if語句的語法格式如下:
if(expression){ statement 1 }
參數(shù)說明:
expression:必選項(xiàng),用于指定條件表達(dá)式,可以使用邏輯運(yùn)算符。
statement 1:待執(zhí)行的語句序列。當(dāng)expression的值為true時,執(zhí)行該語句塊。
簡單if語句的執(zhí)行流程如圖3.1所示。

圖3.1 簡單if語句的執(zhí)行流程
例如,根據(jù)比較兩個變量的值,判斷是否輸出內(nèi)容。代碼如下:

運(yùn)行結(jié)果:
a大于b
3.2.2 if…else語句
if…else語句是if語句的標(biāo)準(zhǔn)形式,在簡單if語句的基礎(chǔ)之上增加了一個else從句。當(dāng)expression的值是false時,執(zhí)行else從句中的內(nèi)容。
if…else語句的語法格式如下:
if(expression){ statement1 }else{ statement2 }
在if語句的標(biāo)準(zhǔn)形式中,首先對expression的值進(jìn)行判斷,如果它的值是true,則執(zhí)行statement 1語句塊中的內(nèi)容,否則執(zhí)行statement 2語句塊中的內(nèi)容。
if…else語句的執(zhí)行流程如圖3.2所示。

圖3.2 if…else語句的執(zhí)行流程
說明
上述if語句是典型的二路分支結(jié)構(gòu),其中else部分可以省略。statement 1為單一語句時,其兩邊的大括號也可以省略。
例如,根據(jù)變量值的不同,輸出不同的內(nèi)容。代碼如下:

運(yùn)行結(jié)果:
form!=1
3.2.3 if…else if語句
if語句是一種很靈活的語句,除了可以使用if...else語句形式外,還可以使用if...else if語句形式。if...else if語句的語法格式如下:

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

圖3.3 if...else if語句的執(zhí)行流程
例如,應(yīng)用if…else if語句對多條件進(jìn)行判斷。首先判斷m的值是否小于或等于1,如果是,則執(zhí)行“alert("m<=1");”;否則將繼續(xù)判斷m的值是否大于1并小于或等于10,如果是,則執(zhí)行“alert(m>1&&m<=10);”;否則將繼續(xù)判斷m的值是否大于10并且小于或等于100,如果是,則執(zhí)行“alert("m>10&&m<=100");”;如果上述的條件都不滿足,則執(zhí)行“alert("m>100");”。代碼如下:

運(yùn)行結(jié)果:
m>10&&m<=100
【例3.1】 判斷用戶是否輸入用戶名與密碼。(實(shí)例位置:資源包\TM\sl\3\01)
(1)在頁面中添加用戶登錄表單及表單元素。代碼如下:

(2)編寫自定義的JavaScript函數(shù)check(),用于通過if語句驗(yàn)證登錄信息是否為空。check()函數(shù)的具體代碼如下:

運(yùn)行程序,如果沒有添加用戶名信息,單擊“登錄”按鈕時將顯示如圖3.4所示的提示對話框。

圖3.4 提示對話框
【例3.2】 應(yīng)用if…else if語句輸出問候語。(實(shí)例位置:資源包\TM\sl\3\02)
if…else if語句在實(shí)際中的應(yīng)用也是十分廣泛的。例如,可以通過該語句來實(shí)現(xiàn)一個時間問候語的功能,即獲取系統(tǒng)當(dāng)前時間,根據(jù)不同的時間段輸出不同的問候內(nèi)容。
首先定義一個變量,以獲取當(dāng)前時間,然后應(yīng)用getHours()方法獲取系統(tǒng)當(dāng)前時間的小時值,最后應(yīng)用if…else if語句判斷在不同的時間段內(nèi)輸出不同的問候語。代碼如下:

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

圖3.5 應(yīng)用if…else if語句輸出問候語
3.2.4 if語句的嵌套
if語句不但可以單獨(dú)使用,而且可以嵌套使用,即在if語句的從句部分嵌套另外一個完整的if語句。在嵌套使用if語句時,其外層if語句從句部分的大括號“{}”可以省略。但本書建議讀者使用大括號“{}”來確定相互之間的層次關(guān)系。這是因?yàn)橛捎诖罄ㄌ枴皗}”使用位置的不同,可能導(dǎo)致程序代碼的含義完全不同,從而輸出不同的內(nèi)容。例如,在下面的兩個實(shí)例中由于大括號“{}”的位置不同,導(dǎo)致程序的輸出結(jié)果完全不同。
示例一
在外層if語句中應(yīng)用大括號“{}”。首先判斷外層if語句中m的值是否小于1,如果m小于1,在嵌套的if…else語中判斷n的值是否等于1;當(dāng)外層if語句中m的值大于10時,繼續(xù)在嵌套的if…else語句中判斷n的值是否等于1。代碼如下:

運(yùn)行結(jié)果:
判斷m大于10,n不等于1
示例二
更改示例一代碼中大括號“{}”的位置,將“}”放置在else語句之前,這時程序代碼的含義就發(fā)生了變化。代碼如下:

此時的大括號“}”被放置在else語句之前,else語句表達(dá)的含義也發(fā)生了變化(當(dāng)嵌套語句中n的值不等于1時將沒有任何輸出),它不再是嵌套語句中不滿足條件時要執(zhí)行的內(nèi)容,而是外層語句中的內(nèi)容,表達(dá)的是當(dāng)外層if語句不滿足給出的條件時執(zhí)行的內(nèi)容。
由于大括號“}”位置的變化,相同的程序代碼有了不同的含義,從而導(dǎo)致該示例沒有任何內(nèi)容輸出。
說明
在嵌套應(yīng)用if語句的過程中,最好是使用大括號“{}”確定程序代碼間的層次關(guān)系。
3.2.5 switch語句
switch語句是典型的多路分支語句,其作用與嵌套if語句基本相同。switch語句比if語句更具有可讀性,而且允許在找不到匹配條件的情況下執(zhí)行默認(rèn)的一組語句。
switch語句的語法格式如下:

參數(shù)說明:
expression:任意的表達(dá)式或變量。
judgement:任意的常數(shù)表達(dá)式。當(dāng)expression的值與某個judgement的值相等時,就執(zhí)行此case后的statement語句;如果expression的值與所有的judgement的值都不相等,則執(zhí)行default后面的statement語句。
break:用于結(jié)束switch語句,從而使JavaScript只執(zhí)行匹配的分支。如果沒有break語句,則該switch語句的所有分支都將被執(zhí)行一遍,switch語句也就失去了使用的意義。
switch語句的執(zhí)行流程如圖3.6所示。

圖3.6 switch語句的執(zhí)行流程
【例3.3】 應(yīng)用switch語句判斷當(dāng)前是星期幾。(實(shí)例位置:資源包\TM\sl\3\03)

運(yùn)行本實(shí)例,在頁面中將會顯示當(dāng)前是星期幾,運(yùn)行結(jié)果如圖3.7所示。

圖3.7 顯示當(dāng)前是星期幾
說明
在程序開發(fā)的過程中,使用if語句還是使用switch語句,可以根據(jù)實(shí)際情況而定,盡量做到物盡其用,不要因?yàn)閟witch語句的效率高就一味地使用,也不要因?yàn)閕f語句常用就不使用switch語句。要具體問題具體分析,使用最適合的條件語句。一般情況下,對于判斷條件較少的可以使用if語句,對于一些多條件判斷應(yīng)該使用switch語句。
- Reporting with Visual Studio and Crystal Reports
- Beginning Java Data Structures and Algorithms
- 自己動手實(shí)現(xiàn)Lua:虛擬機(jī)、編譯器和標(biāo)準(zhǔn)庫
- Mastering PHP Design Patterns
- OpenStack Cloud Computing Cookbook(Fourth Edition)
- Hands-On JavaScript High Performance
- Android Native Development Kit Cookbook
- Learning FuelPHP for Effective PHP Development
- 劍指Java:核心原理與應(yīng)用實(shí)踐
- Flutter跨平臺開發(fā)入門與實(shí)戰(zhàn)
- Java程序設(shè)計(jì)入門
- Learning Docker Networking
- 案例式C語言程序設(shè)計(jì)實(shí)驗(yàn)指導(dǎo)
- Angular應(yīng)用程序開發(fā)指南
- Natural Language Processing with Python Quick Start Guide