第14章 JavaScript語(yǔ)言基礎(chǔ)_第1頁(yè)
第14章 JavaScript語(yǔ)言基礎(chǔ)_第2頁(yè)
第14章 JavaScript語(yǔ)言基礎(chǔ)_第3頁(yè)
第14章 JavaScript語(yǔ)言基礎(chǔ)_第4頁(yè)
第14章 JavaScript語(yǔ)言基礎(chǔ)_第5頁(yè)
已閱讀5頁(yè),還剩98頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

本章要求:第14章JavaScript語(yǔ)言基礎(chǔ)JavaScript的數(shù)據(jù)結(jié)構(gòu)JavaScript中常用的數(shù)據(jù)類型JavaScript運(yùn)算符的使用JavaScript中的表達(dá)式流程控制語(yǔ)句的使用函數(shù)的定義及調(diào)用主要內(nèi)容1.JavaScript數(shù)據(jù)結(jié)構(gòu)2.數(shù)據(jù)類型3.運(yùn)算符與表達(dá)式4.流程控制語(yǔ)句5.函數(shù)6.綜合實(shí)例——將長(zhǎng)數(shù)字分位顯示第14章JavaScript語(yǔ)言基礎(chǔ)14.1JavaScript數(shù)據(jù)結(jié)構(gòu)14.1.1標(biāo)識(shí)符14.1.2關(guān)鍵字14.1.3常量14.1.4變量14.1.1標(biāo)識(shí)符所謂的標(biāo)識(shí)符(identifier),就是一個(gè)名稱。在JavaScript中,標(biāo)識(shí)符用來(lái)命名變量和函數(shù),或者用作JavaScript代碼中某些循環(huán)的標(biāo)簽。在JavaScript中,合法的標(biāo)識(shí)符命名規(guī)則和Java以及其他許多語(yǔ)言的命名規(guī)則相同,第一個(gè)字符必須是字母、下劃線(-)或美元符號(hào)($),其后的字符可以是字母、數(shù)字或下劃線、美元符號(hào)。說(shuō)明:

數(shù)字不允許作為首字符出現(xiàn),這樣JavaScript可以輕易地區(qū)別開標(biāo)識(shí)符和數(shù)字。例如,下面是合法的標(biāo)識(shí)符:imy_name_name$strN1注意:

標(biāo)識(shí)符不能和JavaScript中用于其他目的的關(guān)鍵字同名。JavaScript關(guān)鍵字(ReservedWords)是指在JavaScript語(yǔ)言中有特定含義,成為JavaScript語(yǔ)法中一部分的那些字。JavaScript關(guān)鍵字是不能作為變量名和函數(shù)名使用的。使用JavaScript關(guān)鍵字作為變量名或函數(shù)名,會(huì)使JavaScript在載入過(guò)程中出現(xiàn)編譯錯(cuò)誤。與其他編程語(yǔ)言一樣,JavaScript中也有許多關(guān)鍵字,不能被用做標(biāo)識(shí)符(函數(shù)名、變量名等),如表14-1所示。表14-1JavaScript的關(guān)鍵字14.1.2關(guān)鍵字abstractcontinuefinallyinstanceofprivatethisbooleandefaultfloatintpublicthrowbreakdoforinterfacereturntypeofbytedoublefunctionlongshorttruecaseelsegotonativestaticvarcatchextendsimplementsnewsupervoidcharfalseimportnullswitchwhileclassfinalinpackagesynchronizedwith當(dāng)程序運(yùn)行時(shí),值不能改變的量為常量(Constant)。常量主要用于為程序提供固定的和精確的值(包括數(shù)值和字符串),比如數(shù)字、邏輯值真(true)、邏輯值假(false)等都是常量。聲明常量使用const來(lái)進(jìn)行聲明。語(yǔ)法:const

常量名:數(shù)據(jù)類型=值;常量在程序中定義后便會(huì)在計(jì)算機(jī)中一定的位置存儲(chǔ)下來(lái),在該程序沒(méi)有結(jié)束之前,它是不發(fā)生變化的。如果在程序中過(guò)多地使用常量,會(huì)降低程序的可讀性和可維護(hù)性,當(dāng)一個(gè)常量在程序內(nèi)被多次引用,可以考慮在程序開始處將它設(shè)置為變量,然后再引用,當(dāng)此值需要修改時(shí),則只需更改其變量的值就可以了,既減少出錯(cuò)的機(jī)會(huì),又可以提高工作效率。14.1.3常量變量是指程序中一個(gè)已經(jīng)命名的存儲(chǔ)單元,它的主要作用就是為數(shù)據(jù)操作提供存放信息的容器。對(duì)于變量的使用首先必須明確變量的命名規(guī)則、變量的聲明方法及其變量的作用域。1.變量的命名JavaScript變量的命名規(guī)則如下:必須以字母或下劃線開頭,中間可以是數(shù)字、字母或下劃線。變量名不能包含空格或加號(hào)、減號(hào)等符號(hào)。不能使用JavaScript中的關(guān)鍵字。JavaScript的變量名是嚴(yán)格區(qū)分大小寫的。例如,UserName與username代表兩個(gè)不同的變量。說(shuō)明:

雖然JavaScript的變量可以任意命名,但是在進(jìn)行編程的時(shí)候,最好還是使用便于記憶、且有意義的變量名稱,以增加程序的可讀性。14.1.4變量2.變量的聲明與賦值在JavaScript中,使用變量前需要先聲明變量,所有的JavaScript變量都由關(guān)鍵字var聲明,語(yǔ)法格式如下:varvariable;在聲明變量的同時(shí)也可以對(duì)變量進(jìn)行賦值:varvariable=11;聲明變量時(shí)所遵循的規(guī)則如下:可以使用一個(gè)關(guān)鍵字var同時(shí)聲明多個(gè)變量,例如:vara,b,c //同時(shí)聲明a、b和c3個(gè)變量可以在聲明變量的同時(shí)對(duì)其賦值,即為初始化,例如:vari=1;j=2;k=3; //同時(shí)聲明i、j和k3個(gè)變量,并分別對(duì)其進(jìn)行初始化如果只是聲明了變量,并未對(duì)其賦值,則其值缺省為undefined。var語(yǔ)句可以用作for循環(huán)和for/in循環(huán)的一部分,這樣就使循環(huán)變量的聲明成為循環(huán)語(yǔ)法自身的一部分,使用起來(lái)比較方便。也可以使用var語(yǔ)句多次聲明同一個(gè)變量,如果重復(fù)聲明的變量已經(jīng)有一個(gè)初始值,那么此時(shí)的聲明就相當(dāng)于對(duì)變量的重新賦值。當(dāng)給一個(gè)尚未聲明的變量賦值時(shí),JavaScript會(huì)自動(dòng)用該變量名創(chuàng)建一個(gè)全局變量。在一個(gè)函數(shù)內(nèi)部,通常創(chuàng)建的只是一個(gè)僅在函數(shù)內(nèi)部起作用的局部變量,而不是一個(gè)全局變量。要?jiǎng)?chuàng)建一個(gè)局部變量,不是賦值給一個(gè)已經(jīng)存在的局部變量,而是必須使用var語(yǔ)句進(jìn)行變量聲明。另外,由于JavaScript采用弱類型的形式,因此讀者可以不必理會(huì)變量的數(shù)據(jù)類型,即可以把任意類型的數(shù)據(jù)賦值給變量。例如:聲明一些變量,代碼如下:varvarible=100 //數(shù)值類型varstr="有一條路,走過(guò)了總會(huì)想起" //字符串varbue=true //布爾類型在JavaScript中,變量可以不先聲明,而在使用時(shí),再根據(jù)變量的實(shí)際作用來(lái)確定其所屬的數(shù)據(jù)類型。但是建議在使用變量前就對(duì)其聲明,因?yàn)槁暶髯兞康淖畲蠛锰幘褪悄芗皶r(shí)發(fā)現(xiàn)代碼中的錯(cuò)誤。由于JavaScript是采用動(dòng)態(tài)編譯的,而動(dòng)態(tài)編譯是不易于發(fā)現(xiàn)代碼中的錯(cuò)誤的,特別是變量命名方面的錯(cuò)誤。3.變量的作用域變量的作用域(scope)是指某變量在程序中的有效范圍,也就是程序中定義這個(gè)變量的區(qū)域。在JavaScript中變量根據(jù)作用域可以分為兩種:全局變量和局部變量。全局變量是定義在所有函數(shù)之外,作用于整個(gè)腳本代碼的變量;局部變量是定義在函數(shù)體內(nèi),只作用于函數(shù)體的變量,函數(shù)的參數(shù)也是局部性的,只在函數(shù)內(nèi)部起作用。例如,下面的程序代碼說(shuō)明了變量的作用域作用不同的有效范圍:<scriptlanguage="javascript">vara; //該變量在函數(shù)外聲明,作用于整個(gè)腳本代碼functionsend() {a="JavaScript"varb="語(yǔ)言基礎(chǔ)" //該變量在函數(shù)內(nèi)聲明,只作用于該函數(shù)體alert(a+b);}</script>說(shuō)明:

JavaScript中用“;”作為語(yǔ)句結(jié)束標(biāo)記,如果不加也可以正確地執(zhí)行。用“//”作為單行注釋標(biāo)記;用“/*”和“*/”作為多行注釋標(biāo)記;用“{”和“}”包裝成語(yǔ)句塊?!?/”后面的文字為注釋部分,在代碼執(zhí)行過(guò)程中不起任何作用。4.變量的生存期變量的生存期是指變量在計(jì)算機(jī)中存在的有效時(shí)間。從編程的角度來(lái)說(shuō),可以簡(jiǎn)單地理解為該變量所賦的值在程序中的有效范圍。JavaScript中變量的生存期有兩種:全局變量和局部變量。全局變量在主程序中定義,其有效范圍從其定義開始,一直到本程序結(jié)束為止。局部變量在程序的函數(shù)中定義,其有效范圍只有在該函數(shù)之中;當(dāng)函數(shù)結(jié)束后,局部變量生存期也就結(jié)束了。14.2數(shù)據(jù)類型14.2.1數(shù)字型數(shù)據(jù)14.2.2字符串型數(shù)據(jù) 14.2.3布爾型數(shù)據(jù) 14.2.4特殊數(shù)據(jù)類型14.2.5數(shù)據(jù)類型的轉(zhuǎn)換規(guī)則 數(shù)字(number)是最基本的數(shù)據(jù)類型。在JavaScript中,和其他程序設(shè)計(jì)語(yǔ)言(如C和Java)的不同之處在于,它并不區(qū)別整型數(shù)值和浮點(diǎn)型數(shù)值。在JavaScript中,所有的數(shù)字都是由浮點(diǎn)型表示的。JavaScript采用IEEE754標(biāo)準(zhǔn)定義的64位浮點(diǎn)格式表示數(shù)字,這意味著它能表示的最大值是±1.7976931348623157×10308,最小值是±5×10324。當(dāng)一個(gè)數(shù)字直接出現(xiàn)在JavaScript程序中時(shí),我們稱它為數(shù)值直接量(numericliteral)。JavaScript支持?jǐn)?shù)值直接量的形式有幾種,下面將對(duì)這幾種形式進(jìn)行詳細(xì)介紹。注意:

在任何數(shù)值直接量前加負(fù)號(hào)(﹣)可以構(gòu)成它的負(fù)數(shù)。但是負(fù)號(hào)是一元求反運(yùn)算符,它不是數(shù)值直接量語(yǔ)法的一部分。1.整型數(shù)據(jù)在JavaScript程序中,十進(jìn)制的整數(shù)是一個(gè)數(shù)字序列。例如:07﹣81000JavaScript的數(shù)字格式允許精確地表示﹣900719925474092(﹣253)和900719925474092(253)之間的所有整數(shù)(包括﹣900719925474092(﹣253)和900719925474092(253))。但是使用超過(guò)這個(gè)范圍的整數(shù),就會(huì)失去尾數(shù)的精確性。需要注意的是,JavaScript中的某些整數(shù)運(yùn)算是對(duì)32位的整數(shù)執(zhí)行的,它們的范圍從﹣2147483648(﹣231)到2147483647(231-1)。14.2.1數(shù)字型數(shù)據(jù)2.十六進(jìn)制和八進(jìn)制JavaScript不但能夠處理十進(jìn)制的整型數(shù)據(jù),還能識(shí)別十六進(jìn)制(以16為基數(shù))的數(shù)據(jù)。所謂十六進(jìn)制數(shù)據(jù),是以“0X”和“0x”開頭,其后跟隨十六進(jìn)制數(shù)字串的直接量。十六進(jìn)制的數(shù)字可以是0到9中的某個(gè)數(shù)字,也可以是a(A)到f(F)中的某個(gè)字母,它們用來(lái)表示0到15之間(包括0和15)的某個(gè)值,下面是十六進(jìn)制整型數(shù)據(jù)的例子:0xff //15*16+15=225(基數(shù)為10)0xCAFE911盡管ECMAScripr標(biāo)準(zhǔn)不支持八進(jìn)制數(shù)據(jù),但是JavaScript的某些實(shí)現(xiàn)卻允許采用八進(jìn)制(基數(shù)為8)格式的整型數(shù)據(jù)。八進(jìn)制數(shù)據(jù)以數(shù)字0開頭,其后跟隨一個(gè)數(shù)字序列,這個(gè)序列中的每個(gè)數(shù)字都在0和7之間(包括0和7),例如:0377 //3*64+7*8+7=255(基數(shù)為10)由于某些JavaScript實(shí)現(xiàn)支持八進(jìn)制數(shù)據(jù),而有些則不支持,所以最好不要使用以0開頭的整型數(shù)據(jù),因?yàn)椴恢滥硞€(gè)JavaScript的實(shí)現(xiàn)是將其解釋為十進(jìn)制,還是解釋為八進(jìn)制。

3.浮點(diǎn)型數(shù)據(jù)浮點(diǎn)型數(shù)據(jù)可以具有小數(shù)點(diǎn),它們采用的是傳統(tǒng)科學(xué)記數(shù)法的語(yǔ)法。一個(gè)實(shí)數(shù)值可以被表示為整數(shù)部分后加小數(shù)點(diǎn)和小數(shù)部分。此外,還可以使用指數(shù)法表示浮點(diǎn)型數(shù)據(jù),即實(shí)數(shù)后跟隨字母e或E,后面加上正負(fù)號(hào),其后再加一個(gè)整型指數(shù)。這種記數(shù)法表示的數(shù)值等于前面的實(shí)數(shù)乘以10的指數(shù)次冪。語(yǔ)法:[digits][.digits][(E|e[(+|-)])]例如:1.2.333333333.12e11 //3.12×10111.234E﹣12 //1.234×10﹣12注意:

雖然實(shí)數(shù)有無(wú)窮多個(gè),但是JavaScript的浮點(diǎn)格式能夠精確表示出來(lái)的卻是有限的(確切地說(shuō)是18437736874454810627個(gè)),這意味著在JavaScript中使用實(shí)數(shù)時(shí),表示出數(shù)字通常是真實(shí)數(shù)字的近似值。不過(guò)即使是近似值也足夠用了,這并不是一個(gè)實(shí)際問(wèn)題。字符串(string)是由Unicode字符、數(shù)字、標(biāo)點(diǎn)符號(hào)等組成的序列,它是JavaScript用來(lái)表示文本的數(shù)據(jù)類型。程序中的字符串型數(shù)據(jù)是包含在單引號(hào)或雙引號(hào)中的,由單引號(hào)定界的字符串中可以含有雙引號(hào),由雙引號(hào)定界的字符串中也可以含有單引號(hào)。例如:(1)單引號(hào)括起來(lái)的一個(gè)或多個(gè)字符,代碼如下:'啊''活著的人卻擁有著一顆沉睡的心'(2)雙引號(hào)括起來(lái)的一個(gè)或多個(gè)字符,代碼如下:"呀""我想學(xué)習(xí)JavaScript"(3)單引號(hào)定界的字符串中可以含有雙引號(hào),代碼如下:'name="myname"'(4)雙引號(hào)定界的字符串中可以含有單引號(hào),代碼如下:"Youcancallme'Tom'!"14.2.2字符串型數(shù)據(jù)【例14-1】下面分別定義4個(gè)字符串:<scriptlanguage="javascript"> varstring1="Ilike'javascript'"; //雙引號(hào)中包含單引號(hào) varstring2='Ilike"javascript"'; //單引號(hào)中包含雙引號(hào) varstring3="Ilike\"javascript\""; //雙引號(hào)中包含雙引號(hào) varstring4='Ilike\'javascript\''; //單引號(hào)中包含單引號(hào) document.write(string1+"<br>"); document.write(string2+"<br>"); document.write(string3+"<br>"); document.write(string4+"<br>");</script>執(zhí)行上面的代碼,運(yùn)行結(jié)果如圖14-1所示。圖14-1定義4個(gè)字符串并輸出由上面的實(shí)例可以看出,單引號(hào)內(nèi)出現(xiàn)雙引號(hào)或雙引號(hào)內(nèi)出現(xiàn)單引號(hào)時(shí),不需要進(jìn)行轉(zhuǎn)義。但是,雙引號(hào)內(nèi)出現(xiàn)雙引號(hào)或單引號(hào)內(nèi)出現(xiàn)單引號(hào),則必須進(jìn)行轉(zhuǎn)義(轉(zhuǎn)義字符將在“特殊數(shù)據(jù)類型”中進(jìn)行詳細(xì)講解)。數(shù)值數(shù)據(jù)類型和字符串?dāng)?shù)據(jù)類型的值都無(wú)窮多,但是布爾數(shù)據(jù)類型只有兩個(gè)值,這兩個(gè)合法的值分別由直接量“true”和“false”表示,它說(shuō)明了某個(gè)事物是真還是假。布爾值通常在JavaScript程序中用來(lái)比較所得的結(jié)果。例如:n==1這行代碼測(cè)試了變量n的值是否和數(shù)值1相等。如果相等,比較的結(jié)果就是布爾值true,否則結(jié)果就是false。布爾值通常用于JavaScript的控制結(jié)構(gòu)。例如,JavaScript的if/else語(yǔ)句就是在布爾值為true時(shí)執(zhí)行一個(gè)動(dòng)作,而在布爾值為false時(shí)執(zhí)行另一個(gè)動(dòng)作。通常將一個(gè)創(chuàng)建布爾值與使用這個(gè)比較的語(yǔ)句結(jié)合在一起。例如:if(n==1)m=n+1;elsen=n+1;本段代碼檢測(cè)了n是否等于1,如果相等,就給m增加1,否則給n加1。有時(shí)候可以把兩個(gè)可能的布爾值看作是“on(true)”和“off(false)”,或者看作是“yes(true)”和“no(false)”,這樣比將它們看作是“true”和“false”更為直觀。有時(shí)候把它們看作是1(true)和0(false)會(huì)更加有用(實(shí)際上JavaScript確實(shí)是這樣做的,在必要時(shí)會(huì)將true轉(zhuǎn)換成1,將false轉(zhuǎn)換成0)。14.2.3布爾型數(shù)據(jù)1.轉(zhuǎn)義字符以反斜杠開頭的不可顯示的特殊字符通常稱為控制字符,也被稱為轉(zhuǎn)義字符。通過(guò)轉(zhuǎn)義字符可以在字符串中添加不可顯示的特殊字符,或者防止引號(hào)匹配混亂的問(wèn)題。JavaScript常用的轉(zhuǎn)義字符如表14-2所示。表14-2JavaScript常用的轉(zhuǎn)義字符14.2.4特殊數(shù)據(jù)類型轉(zhuǎn)義字符描述轉(zhuǎn)義字符描述\b退格\v跳格(Tab,水平)\n回車換行\(zhòng)r換行\(zhòng)tTab符號(hào)\\反斜杠\f換頁(yè)\OOO八進(jìn)制整數(shù),范圍000~777\'單引號(hào)\xHH十六進(jìn)制整數(shù),范圍00~FF\"雙引號(hào)\uhhhh十六進(jìn)制編碼的Unicode字符在document.writeln();語(yǔ)句中使用轉(zhuǎn)義字符時(shí),只有將其放在格式化文本塊中才會(huì)起作用,所以腳本必須在<pre>和</pre>的標(biāo)簽內(nèi)。例如,下面是應(yīng)用轉(zhuǎn)義字符使字符串換行,程序代碼如下:document.writeln("<pre>");document.writeln("輕松學(xué)習(xí)\nJavaScript語(yǔ)言!");document.writeln("</pre>");運(yùn)行結(jié)果:輕松學(xué)習(xí)JavaScript語(yǔ)言!如果上述代碼不使用<pre>和</pre>的標(biāo)簽,則轉(zhuǎn)義字符不起作用,代碼如下:document.writeln("快快樂(lè)樂(lè)\n平平安安!");運(yùn)行結(jié)果:快快樂(lè)樂(lè)平平安安!2.未定義值未定義類型的變量是undefined,表示變量還沒(méi)有賦值(如vara;),或者賦予一個(gè)不存在的屬性值(如vara=String.notProperty;)。此外,JavaScript中有一種特殊類型的數(shù)字常量NaN,即“非數(shù)字”。當(dāng)在程序中由于某種原因發(fā)生計(jì)算錯(cuò)誤后,將產(chǎn)生一個(gè)沒(méi)有意義的數(shù)字,此時(shí)JavaScript返回的數(shù)字值就是NaN。3.空值(null)JavaScript中的關(guān)鍵字null是一個(gè)特殊的值,它表示為空值,用于定義空的或不存在的引用。如果試圖引用一個(gè)沒(méi)有定義的變量,則返回一個(gè)null值。這里必須要注意的是:null不等同于空的字符串("")或0。由此可見(jiàn),null與undefined的區(qū)別是,null表示一個(gè)變量被賦予了一個(gè)空值,而undefined則表示該變量尚未被賦值。JavaScript是一種無(wú)類型語(yǔ)言,也就是說(shuō),在聲明變量時(shí)無(wú)需指定數(shù)據(jù)類型,這使得JavaScript更具有靈活性和簡(jiǎn)單性。在代碼執(zhí)行過(guò)程中,JavaScript會(huì)根據(jù)需要進(jìn)行自動(dòng)類型轉(zhuǎn)換,但是在轉(zhuǎn)換時(shí)也要遵循一定的規(guī)則。下面介紹幾種數(shù)據(jù)類型之間的轉(zhuǎn)換規(guī)則。其他數(shù)據(jù)類型轉(zhuǎn)換為數(shù)值型數(shù)據(jù),如表14-3所示。表14-3轉(zhuǎn)換為數(shù)值型數(shù)據(jù)14.2.5數(shù)據(jù)類型的轉(zhuǎn)換規(guī)則類型轉(zhuǎn)換后的結(jié)果undefinedNaNnull0邏輯型若其值為true,則結(jié)果為1;若其值為false,則結(jié)果為0字符串型若內(nèi)容為數(shù)字,則結(jié)果為相應(yīng)的數(shù)字,否則為NaN其他對(duì)象NaN其他數(shù)據(jù)類型轉(zhuǎn)換為邏輯型數(shù)據(jù),如表14-4所示。表14-4轉(zhuǎn)換為邏輯型數(shù)據(jù)類型轉(zhuǎn)換后的結(jié)果undefinedfalsenullfalse數(shù)值型若其值為0或NaN,則結(jié)果為false,否則為true字符串型若其長(zhǎng)度為0,則結(jié)果為false,否則為true其他對(duì)象true其他數(shù)據(jù)類型轉(zhuǎn)換為字符串型數(shù)據(jù),如表14-5所示。表14-5轉(zhuǎn)換為字符串型數(shù)據(jù)每一個(gè)基本數(shù)據(jù)類型都存在一個(gè)相應(yīng)的對(duì)象,這些對(duì)象提供了一些很有用的方法來(lái)處理基本數(shù)據(jù)。在需要的時(shí)候,JavaScript會(huì)自動(dòng)將基本數(shù)據(jù)類型轉(zhuǎn)換為與其相對(duì)應(yīng)的對(duì)象。類型轉(zhuǎn)換后的結(jié)果undefined"undefined"null"NaN"數(shù)值型NaN、0或者與數(shù)值相對(duì)應(yīng)的字符串邏輯型若其值true,則結(jié)果為"true",若其值為false,則結(jié)果為"false"其他對(duì)象若存在,則為其結(jié)果為toString()方法的值,否則其結(jié)果為"undefined"【例14-2】將基本數(shù)據(jù)提升為對(duì)象的應(yīng)用:<scriptlanguage="javascript"><!--varmyString=newString("aBcDe");varlower=myString.toLowerCase();alert(myString+"轉(zhuǎn)換為小寫字母后為:"+lower)//--></script>運(yùn)行結(jié)果如圖14-2所示。圖14-2將基本數(shù)據(jù)提升為對(duì)象14.3運(yùn)算符與表達(dá)式14.3.1算術(shù)運(yùn)算符14.3.2比較運(yùn)算符14.3.3賦值運(yùn)算符14.3.4字符串運(yùn)算符14.3.5布爾運(yùn)算符14.3.6條件運(yùn)算符14.3.7其他運(yùn)算符14.3.8運(yùn)算符優(yōu)先級(jí)14.3.9表達(dá)式14.3.1算術(shù)運(yùn)算符算術(shù)運(yùn)算符用于在程序中進(jìn)行加、減、乘、除等運(yùn)算。在JavaScript中常用的算術(shù)運(yùn)算符如表14-6所示。表14-6JavaScript中的算術(shù)運(yùn)算符運(yùn)

符描

述示

例+加運(yùn)算符4+6//返回值為10-減運(yùn)算符7-2//返回值為5*乘運(yùn)算符7*3//返回值為21/除運(yùn)算符12/3//返回值為4%求模運(yùn)算符7%4//返回值為3++自增運(yùn)算符。該運(yùn)算符有兩種情況:i++(在使用i之后,使i的值加1);++i(在使用i之前,先使i的值加1)i=1;j=i++//j的值為1,i的值為2i=1;j=++i//j的值為2,i的值為2--減運(yùn)算符。該運(yùn)算符有兩種情況:i--(在使用i之后,使i的值減1);--i(在使用i之前,先使i的值減1)i=6;j=i--//j的值為6,i的值為5i=6;j=--i//j的值為5,i的值為5【例14-3】通過(guò)JavaScript在頁(yè)面中定義變量,再通過(guò)算術(shù)運(yùn)算符計(jì)算變量的運(yùn)行結(jié)果:<title>運(yùn)用JavaScript運(yùn)算符</title><scripttype="text/javascript"> varnum1=120,num2=25; //定義兩個(gè)變量

document.write("120+25="+(num1+num2)+"<br>"); //計(jì)算兩個(gè)變量的和

document.write("120-25="+(num1-num2)+"<br>"); //計(jì)算兩個(gè)變量的差

document.write("120*25="+(num1*num2)+"<br>"); //計(jì)算兩個(gè)變量的積

document.write("120/25="+(num1/num2)+"<br>"); //計(jì)算兩個(gè)變量的余數(shù)

document.write("(120++)="+(num1++)+"<br>"); //自增運(yùn)算

document.write("++120="+(++num1)+"<br>");</script>本實(shí)例運(yùn)行結(jié)果如圖14-3所示。圖14-3在頁(yè)面中計(jì)算兩個(gè)變量的算術(shù)運(yùn)算結(jié)果

14.3.2比較運(yùn)算符比較運(yùn)算符的基本操作過(guò)程是:首先對(duì)操作數(shù)進(jìn)行比較,這個(gè)操作數(shù)可以是數(shù)字也可以是字符串,然后返回一個(gè)布爾值true或false。在JavaScript中常用的比較運(yùn)算符如表14-7所示。表14-7JavaScript中的比較運(yùn)算符運(yùn)

符描

述示

例<小于1<6//返回值為true>大于7>10//返回值為false<=小于等于10<=10//返回值為true>=大于等于3>=6//返回值為false==等于。只根據(jù)表面值進(jìn)行判斷,不涉及數(shù)據(jù)類型"17"==17//返回值為true===絕對(duì)等于。根據(jù)表面值和數(shù)據(jù)類型同時(shí)進(jìn)行判斷"17"===17/返回值為false!=不等于。只根據(jù)表面值進(jìn)行判斷,不涉及數(shù)據(jù)類型"17"!=17//返回值為false!==不絕對(duì)等于。根據(jù)表面值和數(shù)據(jù)類型同時(shí)進(jìn)行判斷"17"!==17//返回值為true【例14-4】應(yīng)用比較運(yùn)算符計(jì)算實(shí)現(xiàn)兩個(gè)數(shù)值之間的大小比較:<script> varage=25; //定義變量

document.write("age變量的值為:"+age+"<br>"); //輸出變量值

document.write("age>=20:"+(age>=20)+"<br>"); //實(shí)現(xiàn)變量值比較

document.write("age<20:"+(age<20)+"<br>"); document.write("age!=20:"+(age!=20)+"<br>"); document.write("age>20:"+(age>20)+"<br>");</script>運(yùn)行本實(shí)例,結(jié)果如圖14-4所示。圖14-4比較運(yùn)算符的使用

14.3.3賦值運(yùn)算符JavaScript中的賦值運(yùn)算可以分為簡(jiǎn)單賦值運(yùn)算和復(fù)合賦值運(yùn)算。簡(jiǎn)單賦值運(yùn)算是將賦值運(yùn)算符(=)右邊表達(dá)式的值保存到左邊的變量中;而復(fù)合賦值運(yùn)算混合了其他操作(算術(shù)運(yùn)算操作、位操作等)和賦值操作。例如:sum+=i; //等同于sum=sum+i;JavaScript中的賦值運(yùn)算符如表14-8所示。表14-8JavaScript中的賦值運(yùn)算符運(yùn)算符描

述示

例=將右邊表達(dá)式的值賦給左邊的變量userName="mr"+=將運(yùn)算符左邊的變量加上右邊表達(dá)式的值賦給左邊的變量a+=b//相當(dāng)于a=a+b-=將運(yùn)算符左邊的變量減去右邊表達(dá)式的值賦給左邊的變量a-=b//相當(dāng)于a=a-b*=將運(yùn)算符左邊的變量乘以右邊表達(dá)式的值賦給左邊的變量a*=b//相當(dāng)于a=a*b/=將運(yùn)算符左邊的變量除以右邊表達(dá)式的值賦給左邊的變量a/=b//相當(dāng)于a=a/b%=將運(yùn)算符左邊的變量用右邊表達(dá)式的值求模,并將結(jié)果賦給左邊的變量a%=b//相當(dāng)于a=a%b&=將運(yùn)算符左邊的變量與右邊表達(dá)式的值進(jìn)行邏輯與運(yùn)算,并將結(jié)果賦給左邊的變量a&=b//相當(dāng)于a=a&b!=將運(yùn)算符左邊的變量與右邊表達(dá)式的值進(jìn)行邏輯或運(yùn)算,并將結(jié)果賦給左邊的變量a|=b//相當(dāng)于a=a|b^=將運(yùn)算符左邊的變量與右邊表達(dá)式的值進(jìn)行異或運(yùn)算,并將結(jié)果賦給左邊的變量a^=b//相當(dāng)于a=a^b14.3.4字符串運(yùn)算符字符串運(yùn)算符是用于兩個(gè)字符型數(shù)據(jù)之間的運(yùn)算符,除了比較運(yùn)算符外,還可以是+和+=運(yùn)算符。其中,+運(yùn)算符用于連接兩個(gè)字符串,而+=運(yùn)算符則連接兩個(gè)字符串,并將結(jié)果賦給第一個(gè)字符串。表14-9給出了JavaScript中的字符運(yùn)算符。表14-9JavaScript中的字符運(yùn)算符運(yùn)算符描

述示

例+連接兩個(gè)字符串“mr”+“book”+=連接兩個(gè)字符串并將結(jié)果賦給第一個(gè)字符串varname=“mr”name+=“book”【例14-5】在網(wǎng)頁(yè)中彈出一個(gè)提示對(duì)話框,顯示進(jìn)行字符串運(yùn)算后變量的值,代碼如下:vara="One"+"world"; //將兩個(gè)字符串連接后的值賦值給變量aa+="OneDream" //連接兩個(gè)字符串,并將結(jié)果賦給第一個(gè)字符串a(chǎn)lert(a);運(yùn)行代碼,結(jié)果如圖14-5所示。圖14-5字符串相連

14.3.5布爾運(yùn)算符在JavaScript中增加了幾個(gè)布爾邏輯運(yùn)算符,JavaScript支持的常用布爾運(yùn)算符如表14-10所示。表14-10布爾運(yùn)算符布爾運(yùn)算符

描述!取反&=與之后再賦值&邏輯與|=或之后賦值|邏輯或^=異或之后賦值^邏輯異或?:三目運(yùn)算符14.3.6條件運(yùn)算符條件運(yùn)算符是JavaScript支持的一種特殊的三目運(yùn)算符,其語(yǔ)法格式如下:操作數(shù)?結(jié)果1:結(jié)果2如果“操作數(shù)”的值為true,則整個(gè)表達(dá)式的結(jié)果為“結(jié)果1”,否則為“結(jié)果2”。例如,判斷定義兩個(gè)變量,值都為10,然后判斷兩個(gè)變量是否相等,如果相等則返回“正確”,否則返回“錯(cuò)誤”,代碼如下:<scriptlanguage="javascript">vara=10;varb=10;alert(a==b)?正確:失敗;</script>14.3.7其他運(yùn)算符1.位操作運(yùn)算符位運(yùn)算符分為兩種,一種是普通位運(yùn)算符,另一種是位移運(yùn)算符。在進(jìn)行運(yùn)算前,都先將操作數(shù)轉(zhuǎn)換為32位的二進(jìn)制整數(shù),然后再進(jìn)行相關(guān)運(yùn)算,最后的輸出結(jié)果將以十進(jìn)制表示。位操作運(yùn)算符對(duì)數(shù)值的位進(jìn)行操作,如向左或向右移位等。JavaScript中常用的位操作運(yùn)算符如表14-11所示。表14-11位操作運(yùn)算符位操作運(yùn)算符

描述&與運(yùn)算符|或運(yùn)算符^異或運(yùn)算符~非運(yùn)算符<<左移>>帶符號(hào)右移>>>填0右移2.typeof運(yùn)算符typeof運(yùn)算符返回它的操作數(shù)當(dāng)前所容納的數(shù)據(jù)的類型,這對(duì)于判斷一個(gè)變量是否已被定義特別有用?!纠?4-6】本實(shí)例應(yīng)用typeof運(yùn)算符返回當(dāng)前所容納數(shù)據(jù)類型,代碼如下<scriptlanguage="javascript"> vara=3; varb="name"; varc=null; alert("a的類型為"+(typeofa)+"\nb的類型為"+(typeofb)+"\nc的類型為"+(typeofc));</script>執(zhí)行上面的代碼,運(yùn)行結(jié)果如圖14-6所示。圖14-6使用typeof運(yùn)算符獲取數(shù)據(jù)類型說(shuō)明:typeof運(yùn)算符把類型信息當(dāng)作字符串返回。typeof返回值有6種可能:"number"、"string"、"boolean"、"object"、"function"和"undefined"。

3.new運(yùn)算符通過(guò)new運(yùn)算符來(lái)創(chuàng)建一個(gè)新對(duì)象。語(yǔ)法:newconstructor[(arguments)]constructor:必選項(xiàng)。對(duì)象的構(gòu)造函數(shù)。如果構(gòu)造函數(shù)沒(méi)有參數(shù),則可以省略圓括號(hào)。arguments:可選項(xiàng)。任意傳遞給新對(duì)象構(gòu)造函數(shù)的參數(shù)。例如,應(yīng)用new運(yùn)算符來(lái)創(chuàng)建新對(duì)象,代碼如下:Object1=newObject;Array2=newArray();Date3=newDate("August82008");14.3.8運(yùn)算符優(yōu)先級(jí)JavaScript運(yùn)算符都有明確的優(yōu)先級(jí)與結(jié)合性。優(yōu)先級(jí)較高的運(yùn)算符將先于優(yōu)先級(jí)較低的運(yùn)算符進(jìn)行運(yùn)算,結(jié)合性則是指具有同等優(yōu)先級(jí)的運(yùn)算符將按照怎樣的順序進(jìn)行運(yùn)算。結(jié)合性有向左結(jié)合和向右結(jié)合,例如表達(dá)式“a+b+c”,向左結(jié)合也就是先計(jì)算“a+b”,即“(a+b)+c”;而向右結(jié)合也就是先計(jì)算“b+c”,即“a+(b+c)”。JavaScript運(yùn)算符的優(yōu)先級(jí)順序及其結(jié)合性如表2.9所示。表14-12JavaScript運(yùn)算符的優(yōu)先級(jí)與結(jié)合性優(yōu)先級(jí)結(jié)合性運(yùn)算符最高向左.、[]、()由高到低依次排列向右++、--、-、!、delete、new、typeof、void向左*、/、%向左+、-向左<<、>>、>>>向左<、<=、>、>=、in、instanceof向左==、!=、===、!===向左&向左^向左|向左&&向左||向右?向右=向右*=、/=、%=、+=、-=、<<=、>>=、>>>=、&=、^=、|=最低向左,【例14-7】本實(shí)例演示如何使用()來(lái)改變運(yùn)算的優(yōu)先級(jí)。表達(dá)式“a=1+2*3”的結(jié)果為7,因?yàn)槌朔ǖ膬?yōu)先級(jí)比加法的優(yōu)先級(jí)高,將被優(yōu)先運(yùn)行。通過(guò)括號(hào)“()”運(yùn)算符的優(yōu)先級(jí)改變之后,括號(hào)內(nèi)表達(dá)式將被優(yōu)先執(zhí)行,所以表達(dá)式“b=(1+2)*3”的結(jié)果為9。代碼如下<scriptlanguage="javascript"><!-- vara=1+2*3; //按自動(dòng)優(yōu)先級(jí)計(jì)算

varb=(1+2)*3; //使用()改變運(yùn)算優(yōu)先級(jí)

alert("a="+a+"\nb="+b); //分行輸出結(jié)果--></script>運(yùn)行結(jié)果如圖14-7所示。圖14-7運(yùn)算符的優(yōu)先級(jí)使用14.3.9表達(dá)式表達(dá)式是一個(gè)語(yǔ)句集合,像一個(gè)組一樣,計(jì)算結(jié)果是個(gè)單一值,然后這個(gè)結(jié)果被JavaScript歸入下列數(shù)據(jù)類型之一:boolean、number、string、function或者object。一個(gè)表達(dá)式本身可以簡(jiǎn)單的如一個(gè)數(shù)字或者變量,或者它可以包含許多連接在一起的變量關(guān)鍵字以及運(yùn)算符。例如,表達(dá)式x=7將值7賦給變量x,整個(gè)表達(dá)式計(jì)算結(jié)果為7,因此在一行代碼中使用此類表達(dá)式是合法的。一旦將7賦值給x的工作完成,那么x也將是一個(gè)合法的表達(dá)式。除了賦值運(yùn)算符,還有許多可以用來(lái)形成一個(gè)表達(dá)式的其他運(yùn)算符,例如,算術(shù)運(yùn)算符、字符串運(yùn)算符、邏輯運(yùn)算符等。14.4流程控制語(yǔ)句14.4.1條件控制語(yǔ)句14.4.2循環(huán)控制語(yǔ)句14.4.3跳轉(zhuǎn)語(yǔ)句14.4.1條件控制語(yǔ)句所謂條件控制語(yǔ)句就是對(duì)語(yǔ)句中不同條件的值進(jìn)行判斷,進(jìn)而根據(jù)不同的條件執(zhí)行不同的語(yǔ)句。條件控制語(yǔ)句主要包括兩類:一類是if判斷語(yǔ)句,另一類是switch多分支語(yǔ)句。下面對(duì)這兩種類型的條件控制語(yǔ)句進(jìn)行詳細(xì)的講解。1.if語(yǔ)句if條件判斷語(yǔ)句是最基本、最常用的流程控制語(yǔ)句,可以根據(jù)條件表達(dá)式的值執(zhí)行相應(yīng)的處理。if語(yǔ)句的語(yǔ)法格式如下:if(expression){ statement1}else{ statement2}expression:必選項(xiàng),用于指定條件表達(dá)式,可以使用邏輯運(yùn)算符。statement1:用于指定要執(zhí)行的語(yǔ)句序列。當(dāng)expression的值為true時(shí),執(zhí)行該語(yǔ)句序列。statement2:用于指定要執(zhí)行的語(yǔ)句序列。當(dāng)expression的值為false時(shí),執(zhí)行該語(yǔ)句序列。if...else條件判斷語(yǔ)句的執(zhí)行流程如圖14-8所示。圖14-8if...else條件判斷語(yǔ)句的執(zhí)行流程例如,下面的3段代碼的執(zhí)行結(jié)果是一樣的,都可以計(jì)算2月份的天數(shù)。//計(jì)算2月份的天數(shù)varyear=2009;varmonth=0;if((year%4==0&&year%100!=0)||year%400==0){//判斷指定年是否為閏年 month=29;}else{ month=28;}//計(jì)算2月份的天數(shù)varyear=2009;varmonth=0;if((year%4==0&&year%100!=0)||year%400==0)//判斷指定年是否為閏年 month=29;else{ month=28;}//計(jì)算2月份的天數(shù)varyear=2009;varmonth=0;if((year%4==0&&year%100!=0)||year%400==0){//判斷指定年是否為閏年 month=29;}elsemonth=28;2.if…else語(yǔ)句if…else語(yǔ)句是if語(yǔ)句的標(biāo)準(zhǔn)形式,在if語(yǔ)句簡(jiǎn)單形式的基礎(chǔ)之上增加一個(gè)else從句,當(dāng)expression的值是false時(shí)則執(zhí)行else從句中的內(nèi)容。if(expression){ statement1}else{ statement2}在if語(yǔ)句的標(biāo)準(zhǔn)形式中,首先對(duì)expression的值進(jìn)行判斷,如果它的值是true,則執(zhí)行statement1語(yǔ)句塊中的內(nèi)容,否則執(zhí)行statement2語(yǔ)句塊中的內(nèi)容。例如,根據(jù)變量的值不同,輸出不同的內(nèi)容:varform=0; //定義一個(gè)變量,值為0if(form==1){ //判斷變量的值是否為1 alert("form==1"); //如果變量的值為1,則彈出form==1}else{ //使用else從句

alert("form!=1"); //如果變量的值不為1,則彈出form!=1}運(yùn)行結(jié)果:form!=1。3.if…elseif語(yǔ)句if語(yǔ)句是一種使用很靈活的語(yǔ)句,除了可以使用if...else語(yǔ)句的形式,還可以使用if...elseif語(yǔ)句的形式。if...elseif語(yǔ)句的語(yǔ)法格式如下:if(expression1){ statement1}elseif(expression2){ statement2}…elseif(expressionn){ statementn}else{ statementn+1}if...elseif語(yǔ)句的執(zhí)行流程如圖14-9所示。圖14-9if...elseif語(yǔ)句的執(zhí)行流程例如,應(yīng)用elseif語(yǔ)句對(duì)多條件進(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");。程序代碼如下:varm=56; //定義一個(gè)變量m值為56if(m<=1) //判斷如果m<=1則執(zhí)行下面的內(nèi)容 alert("m<=1");elseif(m>1&&m<=10) //判斷如果m>1&&m<=10則執(zhí)行下面的內(nèi)容 alert(m>1&&m<=10); elseif(m>10&&m<=100) //判斷如果m>10&&m<=100則執(zhí)行下面的內(nèi)容 alert("m>10&&m<=100"); else //判斷如果m的值不符合上述條件則輸出下面的內(nèi)容 alert("m>100");運(yùn)行結(jié)果:m>10&&m<=100。【例14-8】判斷用戶是否輸入用戶名與密碼。代碼如下(1)在頁(yè)面中添加用戶登錄表單及表單元素。具體代碼如下:<formname="form1"method="post"action=""><tablewidth="221"border="1"cellspacing="0"cellpadding="0"bordercolor="#FFFFFF"bordercolordark="#CCCCCC"bordercolorlight="#FFFFFF"><tr><tdheight="30"colspan="2"bgcolor="#eeeeee">·用戶登錄</td></tr><tr><tdwidth="59"height="30">用戶名:</td><tdwidth="162"><inputname="user"type="text"id="user"></td></tr><tr><tdheight="30">密

碼:</td><td><inputname="pwd"type="text"id="pwd"></td></tr><tr><tdheight="30"colspan="2"align="center"><inputname="Button"type="button"class="btn_grey"value="登錄"onClick="check()">

<inputname="Submit2"type="reset"class="btn_grey"value="重置"></td></tr></table></form>(2)編寫自定義的JavaScript函數(shù)check(),用于通過(guò)if語(yǔ)句驗(yàn)證登錄信息是否為空。check()函數(shù)的具體代碼如下:<scriptlanguage="javascript"> functioncheck(){ varname=form1.user.value; //獲取用戶添加的用戶名信息 varpwd=form1.pwd.value; //獲取用戶添加的密碼信息 if((name=="")||(name==null)){ //判斷用戶名是否為空 alert("請(qǐng)輸入用戶名!"); form1.user.focus(); //用戶名文本框獲取焦點(diǎn) return; }elseif((pwd=="")||(pwd==null)){ //判斷密碼是否為空 alert("請(qǐng)輸入密碼!"); form1.pwd.focus(); //密碼文本框獲取焦點(diǎn) return; }else{ form1.submit(); //提交表單 } }</script>運(yùn)行程序,如果沒(méi)有添加用戶名信息,單擊“登錄”按鈕,將顯示如圖14-10所示的提示對(duì)話框。圖14-10彈出提示框elseif語(yǔ)句在實(shí)際中的應(yīng)用也是十分廣泛的,例如,可以通過(guò)該語(yǔ)句來(lái)實(shí)現(xiàn)一個(gè)時(shí)間問(wèn)候語(yǔ)的功能。即獲取系統(tǒng)當(dāng)前時(shí)間,根據(jù)不同的時(shí)間段輸出不同的問(wèn)候內(nèi)容?!纠?4-9】應(yīng)用elseif語(yǔ)句輸出問(wèn)候語(yǔ)。首先定義一個(gè)變量獲取當(dāng)前時(shí)間,然后再應(yīng)用getHours()方法獲取系統(tǒng)當(dāng)前時(shí)間的小時(shí)值,最后應(yīng)用elseif語(yǔ)句判斷在不同的時(shí)間段內(nèi)輸出不同的問(wèn)候語(yǔ)。代碼如下<scriptlanguage="javascript">functiondata(){ //定義一個(gè)函數(shù)data varnow=newDate(); //定義變量獲取當(dāng)前時(shí)間

varhour=now.getHours(); //定義變量獲取當(dāng)前時(shí)間的小時(shí)值

if((hour>5)&&(hour<=7)) alert("早上好!"); //如果當(dāng)前時(shí)間在5~7時(shí)之間,則輸出“早上好!”

elseif((hour>7)&&(hour<=11)) alert("上午好!祝您好心情"); //如果時(shí)間在7~11時(shí)之間,則輸出“上午好!祝您好心情”

elseif((hour>11)&&(hour<=13)) alert("中午好!"); //如果時(shí)間在11~13時(shí)之間,則輸出“中午好!”

elseif((hour>13)&&(hour<=17)) alert("下午好!"); //如果時(shí)間在13~17時(shí)之間,則輸出“下午好!”

elseif((hour>17)&&(hour<=21)) alert("晚上好!"); //如果時(shí)間在17~21時(shí)之間,則輸出“晚上好!”

elseif((hour>21)&&(hour<=23)) alert("夜深了,注意身體哦"); //如果時(shí)間在21~23時(shí)之間,則輸出“夜深了,注意身體哦”

elsealert("凌晨了!該休息了!");//如果時(shí)間不符合上述條件,則輸出“凌晨了!該休息了!”} </script>運(yùn)行結(jié)果如圖14-11所示。圖14-11應(yīng)用elseif語(yǔ)句輸出問(wèn)候語(yǔ)4.if語(yǔ)句的嵌套if語(yǔ)句不但可以單獨(dú)使用,而且可以嵌套應(yīng)用,即在if語(yǔ)句的從句部分嵌套另外一個(gè)完整的if語(yǔ)句。在if語(yǔ)句中嵌套使用if語(yǔ)句,其外層if語(yǔ)句的從句部分的大括號(hào){}可以省略。但是,在使用應(yīng)用嵌套的if語(yǔ)句時(shí),最好是使用大括號(hào){}來(lái)確定相互之間的層次關(guān)系。否則,由于大括號(hào){}使用位置的不同,可能導(dǎo)致程序代碼的含義完全不同,從而輸出不同的內(nèi)容。例如在下面的兩個(gè)示例中由于大括號(hào){}的位置不同,結(jié)果導(dǎo)致程序的輸出結(jié)果完全不同。示例一:在外層if語(yǔ)句中應(yīng)用大括號(hào){},首先判斷外層if語(yǔ)句m的值是否小于1,如果m小于1,則執(zhí)行下面的內(nèi)容;然后判斷當(dāng)外層if語(yǔ)句m的值大于10時(shí),則執(zhí)行如下內(nèi)容,程序關(guān)鍵代碼如下:varm=12;n=m;//m、n值都為12if(m<1){ //首先判斷外層if語(yǔ)句m的值是否小于1,如果m小于1則執(zhí)行下面的內(nèi)容 if(n==1) //在m小于1時(shí),判斷嵌套的if語(yǔ)句中n的值是否等于1,如果n等于1則輸出下面的內(nèi)容 alert("判斷M小于1,N等于1"); else //如果n的值不等于1則輸出下面的內(nèi)容 alert("判斷M小于1,N不等于1");}elseif(m>10){ //判斷外層if語(yǔ)句m的值是否大于10,如果m滿足條件,則執(zhí)行下面的語(yǔ)句 if(n==1) //如果n等于1,則執(zhí)行下面的語(yǔ)句 alert("判斷M大于10,N等于1"); else //n不等于1,則執(zhí)行下面的語(yǔ)句 alert("判斷M大于10,N不等于1"); }運(yùn)行結(jié)果:判斷M大于10,N等于1。示例二:更改示例1代碼中大括號(hào){}的位置,將大括號(hào)“}”放置在else語(yǔ)句之前,這時(shí)程序代碼的含義就發(fā)生了變化,程序代碼如下:varm=12;n=m;//m、n值都為12if(m<1){ //首先判斷外層if語(yǔ)句m的值是否小于1,如果m小于1則執(zhí)行下面的內(nèi)容 if(n==1) //在m小于1時(shí),判斷嵌套的if語(yǔ)句中n的值是否等于1,如果n等于1則輸出下面的內(nèi)容 alert("判斷M小于1,N等于1"); else //如果n的值不等于1則輸出下面的內(nèi)容 alert("判斷M小于1,N不等于1");}elseif(m>10){ //判斷外層if語(yǔ)句m的值是否大于10,如果m滿足條件,則執(zhí)行下面的語(yǔ)句 if(n==1) //如果n等于1,則執(zhí)行下面的語(yǔ)句 alert("判斷M大于10,N等于1");}else //當(dāng)m的值不滿足條件時(shí),則執(zhí)行下面的語(yǔ)句 alert("判斷M大于10,N不等于1");此時(shí)的大括號(hào)“}”被放置在else語(yǔ)句之前,else語(yǔ)句表達(dá)的含義也發(fā)生了變化(當(dāng)嵌套語(yǔ)句中n的值不等于1時(shí)將沒(méi)有任何輸出),它不再是嵌套語(yǔ)句中不滿足條件時(shí)要執(zhí)行的內(nèi)容,而是外層語(yǔ)句中的內(nèi)容,表達(dá)的是當(dāng)外層if語(yǔ)句不滿足給出的條件時(shí)執(zhí)行的內(nèi)容。由于大括號(hào)“}”位置的變化,結(jié)果導(dǎo)致相同的程序代碼有了不同的含義,從而導(dǎo)致該示例沒(méi)有任何內(nèi)容輸出。說(shuō)明:

在嵌套應(yīng)用if語(yǔ)句的過(guò)程中,最好是使用大括號(hào){}確定程序代碼的層次關(guān)系。

5.switch語(yǔ)句switch是典型的多路分支語(yǔ)句,其作用與嵌套使用if語(yǔ)句基本相同,但switch語(yǔ)句比if語(yǔ)句更具有可讀性,而且switch語(yǔ)句允許在找不到一個(gè)匹配條件的情況下執(zhí)行默認(rèn)的一組語(yǔ)句。switch語(yǔ)句的語(yǔ)法格式如下:switch(expression){casejudgement1:statement1;break;casejudgement2:statement2;break;…casejudgementn:statementn;break;default:statementn+1; break;}expression:任意的表達(dá)式或變量。judgement:任意的常數(shù)表達(dá)式。當(dāng)expression的值與某個(gè)judgement的值相等時(shí),就執(zhí)行此case后的statement語(yǔ)句;如果expression的值與所有的judgement的值都不相等,則執(zhí)行default后面的statement語(yǔ)句。break:用于結(jié)束switch語(yǔ)句,從而使JavaScript只執(zhí)行匹配的分支。如果沒(méi)有了break語(yǔ)句,則該switch語(yǔ)句的所有分支都將被執(zhí)行,switch語(yǔ)句也就失去了使用的意義。switch語(yǔ)句的執(zhí)行流程如圖14-12所示。圖14-12switch語(yǔ)句的執(zhí)行流程【例14-10】應(yīng)用switch判斷當(dāng)前是星期幾。代碼如下<scriptlanguage="javascript">varnow=newDate(); //獲取系統(tǒng)日期varday=now.getDay(); //獲取星期varweek;switch(day){case1:week="星期一"; break;case2:week="星期二"; break;case3:week="星期三"; break;case4:week="星期四"; break;case5:week="星期五"; break;case6:week="星期六"; break;default:week="星期日";break;document.write("今天是"+week); //輸出中文的星期</script>運(yùn)行本例,會(huì)將當(dāng)前是星期幾在頁(yè)面中顯示,運(yùn)行結(jié)果如圖14-13所示。圖14-13顯示當(dāng)前是星期幾說(shuō)明:

在程序開發(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ǔ)句。14.4.2循環(huán)控制語(yǔ)句所謂循環(huán)語(yǔ)句主要就是在滿足條件的情況下反復(fù)的執(zhí)行某一個(gè)操作。循環(huán)控制語(yǔ)句主要包括:while、do…while和for,下面分別進(jìn)行講解。1.while語(yǔ)句與for語(yǔ)句一樣,while語(yǔ)句也可以實(shí)現(xiàn)循環(huán)操縱。while循環(huán)語(yǔ)句也稱為前測(cè)試循環(huán)語(yǔ)句,它是利用一個(gè)條件來(lái)控制是否要繼續(xù)重復(fù)執(zhí)行這個(gè)語(yǔ)句。while循環(huán)語(yǔ)句與for循環(huán)語(yǔ)句相比,無(wú)論是語(yǔ)法還是執(zhí)行的流程,都較為簡(jiǎn)明易懂。while循環(huán)語(yǔ)句的語(yǔ)法格式如下:while(expression){ statement}expression:一個(gè)包含比較運(yùn)算符的條件表達(dá)式,用來(lái)指定循環(huán)條件。statement:用來(lái)指定循環(huán)體,在循環(huán)條件的結(jié)果為true時(shí),重復(fù)執(zhí)行。說(shuō)明:

while循環(huán)語(yǔ)句之所以命名為前測(cè)試循環(huán),是因?yàn)樗扰袛啻搜h(huán)的條件是否成立,然后才進(jìn)行重復(fù)執(zhí)行的操作。也就是說(shuō),while循環(huán)語(yǔ)句執(zhí)行的過(guò)程是先判斷條件表達(dá)式,如果條件表達(dá)式的值為true,則執(zhí)行循環(huán)體,并且在循環(huán)體執(zhí)行完畢后,進(jìn)入下一次循環(huán),否則退出循環(huán)。while循環(huán)語(yǔ)句的執(zhí)行流程如圖14-14所示。圖14-14while循環(huán)語(yǔ)句的執(zhí)行流程說(shuō)明:

在使用while語(yǔ)句時(shí),也一定要保證循環(huán)可以正常結(jié)束,即必須保證條件表達(dá)式的值存在為true的情況,否則將形成死循環(huán)。例如,下面的循環(huán)語(yǔ)句就會(huì)造成死循環(huán),原因是i永遠(yuǎn)都小于100。vari=1;while(i<=100){ alert(i);//輸出i的值}while循環(huán)語(yǔ)句經(jīng)常用于循環(huán)執(zhí)行的次數(shù)不確定的情況下?!纠?4-11】通過(guò)while循環(huán)語(yǔ)句實(shí)現(xiàn)在頁(yè)面中列舉出累加和不大于10的所有自然數(shù)。代碼如下:<scriptlanguage="javascript"> vari=1; //由于是計(jì)算自然數(shù),所以i的初始值設(shè)置為1 varsum=i; varresult=""; document.write("累加和不大于10的所有自然數(shù)為:<br>"); while(sum<10){ sum=sum+i; //累加i的值

document.write(i+'<br>'); //輸出符合條件的自然數(shù)

i++; //該語(yǔ)句一定不要少

}</script>運(yùn)行本實(shí)例,結(jié)果如圖14-15所示。圖14-15while循環(huán)累積和不大于10的自然數(shù)2.do…while語(yǔ)句do…while循環(huán)語(yǔ)句也稱為后測(cè)試循環(huán)語(yǔ)句,它也是利用一個(gè)條件來(lái)控制是否要繼續(xù)重復(fù)執(zhí)行這個(gè)語(yǔ)句。與while循環(huán)所不同的是,它先執(zhí)行一次循環(huán)語(yǔ)句,然后再去判斷是否繼續(xù)執(zhí)行。do…while循環(huán)語(yǔ)句的語(yǔ)法格式如下:do{ statement}while(expression);statement:用來(lái)指定循環(huán)體,循環(huán)開始時(shí)首先被執(zhí)行一次,然后在循環(huán)條件的結(jié)果為true時(shí),重復(fù)執(zhí)行。expression:一個(gè)包含比較運(yùn)算符的條件表達(dá)式,用來(lái)指定循環(huán)條件。說(shuō)明:

do…while循環(huán)語(yǔ)句執(zhí)行的過(guò)程是:先執(zhí)行一次循環(huán)體,然后再判斷條件表達(dá)式,如果條件表達(dá)式的值為true,則繼續(xù)執(zhí)行,否則退出循環(huán)。也就是說(shuō),do…while循環(huán)語(yǔ)句中的循環(huán)體至少被執(zhí)行一次。do…while循環(huán)語(yǔ)句的執(zhí)行流程如圖14-16所示。圖14-16do…while循環(huán)語(yǔ)句的執(zhí)行過(guò)程do…while循環(huán)語(yǔ)句同while循環(huán)語(yǔ)句類似,也常用于循環(huán)執(zhí)行的次數(shù)不確定的情況。注意:

do…while語(yǔ)句結(jié)尾處的while語(yǔ)句括號(hào)后面有一個(gè)分號(hào)“;”,在書寫的過(guò)程中一定不能遺漏,否則JavaScript會(huì)認(rèn)為循環(huán)語(yǔ)句是一個(gè)空語(yǔ)句,后面大括號(hào){}中的代碼一次也不會(huì)執(zhí)行,并且程序會(huì)陷入死循環(huán)。3.for循環(huán)for循環(huán)語(yǔ)句也稱為計(jì)次循環(huán)語(yǔ)句,一般用于循環(huán)次數(shù)已知的情況,在JavaScript中應(yīng)用比較廣泛。for循環(huán)語(yǔ)句的語(yǔ)法格式如下:for(initialize;test;increment){ statement}initialize:初始化語(yǔ)句,用來(lái)對(duì)循環(huán)變量進(jìn)行初始化賦值。test:循環(huán)條件,一個(gè)包含比較運(yùn)算符的表達(dá)式,用來(lái)限定循環(huán)變量的邊限。如果循環(huán)變量超過(guò)了該邊限,則停止該循環(huán)語(yǔ)句的執(zhí)行。increment:用來(lái)指定循環(huán)變量的步幅。statement:用來(lái)指定循環(huán)體,在循環(huán)條件的結(jié)果為true時(shí),重復(fù)執(zhí)行。說(shuō)明:

for循環(huán)語(yǔ)句執(zhí)行的過(guò)程是:先執(zhí)行初始化語(yǔ)句,然后判斷循環(huán)條件,如果循環(huán)條件的結(jié)果為true,則執(zhí)行一次循環(huán)體,否則直接退出循環(huán),最后執(zhí)行迭代語(yǔ)句,改變循環(huán)變量的值,至此完成一次循環(huán);接下來(lái)將進(jìn)行下一次循環(huán),直到循環(huán)條件的結(jié)果為false,才結(jié)束循環(huán)。for循環(huán)語(yǔ)句的執(zhí)行流程如圖14-17所示。圖14-17for循環(huán)語(yǔ)句的執(zhí)行流程為使讀者更好的了解for語(yǔ)句的使用,下面通過(guò)一個(gè)具體的實(shí)例來(lái)介紹for語(yǔ)句的使用方法?!纠?4-12】計(jì)算100以內(nèi)所有奇數(shù)的和。代碼如下:<scriptlanguage="javascript">varsum=0;for(i=1;i<100;i+=2){ sum=sum+i; //計(jì)算100以內(nèi)各奇數(shù)之和alert("100以內(nèi)所有奇數(shù)的和為:"+sum); //輸出計(jì)算結(jié)果</script>運(yùn)行程序,將會(huì)彈出提示框,顯示運(yùn)算結(jié)果,如圖14-18所示。圖14-18計(jì)算100以內(nèi)奇數(shù)和說(shuō)明:在使用for語(yǔ)句時(shí),一定要保證循環(huán)可以正常結(jié)束,也就是必須保證循環(huán)條件的結(jié)果存在為true的情況,否則循環(huán)體將無(wú)休止地執(zhí)行下去,從而形成死循環(huán)。例如,下面的循環(huán)語(yǔ)句就會(huì)造成死循環(huán),原因是i永遠(yuǎn)大于等于1。for(i=1;i>=1;i++){ alert(i);}

14.4.3跳轉(zhuǎn)語(yǔ)句1.continue語(yǔ)句continue語(yǔ)句和break語(yǔ)句類似,不同的是:continue語(yǔ)句用于中止本次循環(huán),并開始下一次循環(huán)。其語(yǔ)法格式如下:continue;注意:

continue語(yǔ)句只能應(yīng)用在while、for、do…while和switch語(yǔ)句中。例如,在for語(yǔ)句中通過(guò)continue語(yǔ)句計(jì)算金額大于等于1000的數(shù)據(jù)的和的代碼如下:vartotal=0;varsum=newArray(1000,1200,100,600,736,1107,1205); //聲明一個(gè)一維數(shù)組for(i=0;i<sum.length;i++){ if(sum[i]<1000)continue; //不計(jì)算金額小于1000的數(shù)據(jù) total+=sum[i];} document.write("累加和為:"+total); //輸出計(jì)算結(jié)果運(yùn)行結(jié)果為:“累加和為:4512”。說(shuō)明:

當(dāng)使用continue語(yǔ)句中止本次循環(huán)后,如果循環(huán)條件的結(jié)果為false,則退出循環(huán),否則繼續(xù)下一次循環(huán)。break語(yǔ)句通常用在for、while、do…while或switch語(yǔ)句中。2.break語(yǔ)句break語(yǔ)句用于退出包含在最內(nèi)層的循環(huán)或者退出一個(gè)switch語(yǔ)句。break語(yǔ)句的語(yǔ)法格式如下:break;例如,在for語(yǔ)句中通過(guò)break語(yǔ)句中斷循環(huán)的代碼如下。varsum=0;for(i=0;i<100;i++){ sum+=i; if(sum>10)break;//如果sum>10就會(huì)立即跳出循環(huán)}document.write("0至"+i+"(包括"+i+")之間自然數(shù)的累加和為:"+sum);運(yùn)行結(jié)果為:“0至5(包括5)之間自然數(shù)的累加和為:15”?!纠?4-13】本實(shí)例通過(guò)JavaScript實(shí)現(xiàn)在頁(yè)面中顯示距離2013年元旦的天數(shù)。如果2013年元旦已經(jīng)過(guò)去了,系統(tǒng)也會(huì)給出提示信息。代碼如下(1)定義JavaScript函數(shù),實(shí)現(xiàn)判斷系統(tǒng)當(dāng)前時(shí)間與2012年元旦相聚的天數(shù)。代碼如下:functioncountdown(title,Intime,divId){varonline=newDate(Intime); //根據(jù)參數(shù)定義時(shí)間對(duì)象varnow=newDate(); //定義當(dāng)前系統(tǒng)時(shí)間對(duì)象varleave=online.getTime()-now.getTime(); //計(jì)算時(shí)間差varday=Math.floor(leave/(1000*60*60*24))+1;if(day>1){ if(document.all){ divId.innerHTML="<b>——距"+title+"還有"+day+"天!</b>"; //頁(yè)面顯示信息

}}else{ if(day==1){ if(document.all){ divId.innerHTML="<b>——明天就是"+title+"啦!</b>"; } }else{ if(day==0){divId.innerHTML="<b>今天就是"+title+"呀!</b>"; }else{ if(document.all){ divId.innerHTML="<b>——唉呀!"+title+"已經(jīng)過(guò)了!</b>"; }

(2)在頁(yè)面中定義表格,用于顯

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論