版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
4.3.1數(shù)值型
JavaScript和其他語(yǔ)言不同,它不區(qū)分?jǐn)?shù)值是整型還是浮點(diǎn)型,而統(tǒng)統(tǒng)以64位的浮點(diǎn)數(shù)進(jìn)行表示,表示范圍為-1.7976931348623157×10308~-5×10-324和5×10-324~1.7976931348623157×10308,整數(shù)表示范圍為-253~253。但需要說(shuō)明的是,在JS中操作整數(shù),如數(shù)組下標(biāo)和位操作都是以32位形式的整數(shù)執(zhí)行的。此外,JavaScript還支持以下數(shù)值類(lèi)型:Infinity//無(wú)窮大//Number為JavaScript對(duì)象,POSITIVE_INFINITY表示正無(wú)窮大,只讀屬性Number.POSITIVE_INFINITY//負(fù)無(wú)窮大,只讀屬性Number.NEGATIVE_INFINITYNumber.MAX_VALUE//最大值NaN或者Number.NaN//非數(shù)值由于四舍五入的不精確性,JavaScript可以精確表示1/2,1/4,1/1024,但不能精確表示1/10,1/100和1/1000這樣的數(shù)值[19],例如x=0.3–0.2;x==0.1//錯(cuò)誤y=0.2–0.1;y==0.1//正確對(duì)類(lèi)似這樣的比較操作,要特別小心。4.3.2文本類(lèi)型JavaScript以字符串表示文本類(lèi)型。JavaScript字符串是以雙引號(hào)(”)或單引號(hào)(’)括起來(lái)的一系列Unicode字符。字符串中字符的個(gè)數(shù)為字符串的長(zhǎng)度。表示字符和Java編程語(yǔ)言不同,單引號(hào)和雙引號(hào)都表示字符串,而不是單引號(hào)表示字符,而雙引號(hào)表示字符串。JS中的字符串如下:“”//空串,即長(zhǎng)度為0“HelloWorld”“3.14”“Hesaysit’svery‘important’”//引號(hào)的嵌套或者‘Hesaysit’svery“important”’//與上一句是等同的如果字符串中要包含單引號(hào)或者雙引號(hào)(即單引號(hào)或雙引號(hào)作為字符串的內(nèi)容,而不是分隔符)就需要用到轉(zhuǎn)義字符,轉(zhuǎn)義字符以反斜線(xiàn)(\)開(kāi)頭。JavaScript中的轉(zhuǎn)義字符如表4-1所示。表4-1JavaScript中的轉(zhuǎn)義字符轉(zhuǎn)義字符說(shuō)明轉(zhuǎn)義字符說(shuō)明\0NUL字符(\u0000)\b退格(\u0008)\t水平制表符(\u0009)\n換行符(\u000A)\v垂直制表符(\u000B)\f換頁(yè)符(\u000C)\r回車(chē)符(u000D)\”雙引號(hào)(\u0022)\’單引號(hào)(\u00247)\\反斜線(xiàn)(\u005C)\xhh兩位十六進(jìn)制數(shù)表示的字符\xhhhh四位十六進(jìn)制數(shù)表示的Unicode字符4.3.3布爾型、null和undefined
布爾值表示只有兩種可能值的情況,比如是或否,真與假等。JS中以true表示真,false表示假。null是JS中的關(guān)鍵字,對(duì)于數(shù)值、字符串和對(duì)象表示其值不存在。undefined是JS定義的全局變量,與null不同。它可以表示:◆變量未初始化時(shí)的值;
◆對(duì)象不存在的屬性的值;
◆數(shù)組不存在的元素的值;
◆未定義返回值的函數(shù)的返回值;
◆未提供實(shí)際參數(shù)的形參值。null和undefined用相等運(yùn)算符(==)比較是相等的,但它們之間的區(qū)別是
:undefined表示系統(tǒng)級(jí)的,不可預(yù)料的,或者錯(cuò)誤引起的值不存在;而null表示程序級(jí)的,正常的或可預(yù)料的值不存在[19]。雖然二者存在著一定的差異,但通常情況下二者可以通用。如果給變量或?qū)傩再x值,或者作為參數(shù)傳遞給調(diào)用函數(shù),最好使用null。4.3.4全局對(duì)象
全局對(duì)象定義了JavaScript程序可用的符號(hào),在JavaScript解釋器啟動(dòng),或者瀏覽器加載新的頁(yè)面完成時(shí)創(chuàng)建,包含以下重要內(nèi)容:
◆全局屬性——如,undefined、Infinity和NaN等;
◆全局函數(shù)——如,isNaN()、parseInt()和eval()等;
◆構(gòu)造函數(shù)——如,Date()、RegExp()、String()、Object和Array()等。
◆全局對(duì)象——如,Math和JSON等。全局對(duì)象中定義的屬性、函數(shù)、構(gòu)造函數(shù)和對(duì)象都可以直接使用,無(wú)須事先定義。JavaScript的全局對(duì)象與Java的lang包的作用和地位類(lèi)似。如果你沒(méi)有學(xué)習(xí)過(guò)Java就沒(méi)必要為這個(gè)lang包是什么而大傷腦筋了。4.3.5類(lèi)型轉(zhuǎn)換
1、自動(dòng)類(lèi)型轉(zhuǎn)換
JavaScript類(lèi)型的十分靈活,各種類(lèi)型之間可以相互轉(zhuǎn)換。如:‘7’*‘4’//值為28,把字符串’7’和’4’轉(zhuǎn)換成數(shù)字1–‘x’//結(jié)果為NaN,因?yàn)樽址痻’無(wú)法轉(zhuǎn)換成數(shù)字等等。此類(lèi)轉(zhuǎn)換無(wú)需程序員進(jìn)行干預(yù),JS自動(dòng)進(jìn)行轉(zhuǎn)換,這種類(lèi)型轉(zhuǎn)換稱(chēng)之為“自動(dòng)類(lèi)型轉(zhuǎn)換”,各種類(lèi)型之間的自動(dòng)轉(zhuǎn)換如表4-2[19]所示。*說(shuō)明:function(){}可以定義函數(shù),也可以看作定義對(duì)象。對(duì)于對(duì)象(含數(shù)組和函數(shù))不推薦使用自動(dòng)類(lèi)型轉(zhuǎn)換,而應(yīng)根據(jù)實(shí)際需要編寫(xiě)相應(yīng)的代碼。2、強(qiáng)制類(lèi)型轉(zhuǎn)換
(1)把數(shù)字轉(zhuǎn)換成字符串
如果自動(dòng)類(lèi)型轉(zhuǎn)換不能滿(mǎn)足需要怎么辦?JavsScript還提供了強(qiáng)制類(lèi)型轉(zhuǎn)換的機(jī)制。數(shù)字轉(zhuǎn)換成字符串有兩種方法:●加上一個(gè)空的字符串,如123+“”(這里的+號(hào)表示連接符,連結(jié)左右兩個(gè)操作數(shù),而不加號(hào)),結(jié)果就是字符串”123”。
●調(diào)用toString()方法,如123.toString(),結(jié)果就是字符串”123”。(2)把字符串轉(zhuǎn)換成數(shù)字
●把字符串轉(zhuǎn)換成數(shù)字也有兩種方法:減去0的方法,如”123”–0,結(jié)果就是數(shù)字123。
●調(diào)用parseInt()和parseFloat()方法。其中,parseInt()只能處理整數(shù),parseFloat()即可處理整數(shù),也可處理浮點(diǎn)數(shù)。如parseInt(“123”),結(jié)果就是整數(shù)123,parseFloat(“123.01”),結(jié)果就是數(shù)值123.01。4.3.6數(shù)據(jù)類(lèi)型的性質(zhì)
對(duì)于原始類(lèi)型的數(shù)據(jù)(undefined,null,布爾類(lèi)型,數(shù)值和字符串),它們的值是不可改變的,而對(duì)于對(duì)象類(lèi)型則不同,它們是可以改變的。如s=“hello”;s.toUpperCase();只是toUpperCase()函數(shù)的返回值變成了大寫(xiě),而字符串s本身沒(méi)有任何改變,仍然是原來(lái)的”hello”。toUpperCase()是String對(duì)象的一個(gè)方法,用于把一個(gè)字符串全部轉(zhuǎn)換成大寫(xiě)字母。在后續(xù)章節(jié)中我們會(huì)繼續(xù)討論String對(duì)象的常用方法。而對(duì)于對(duì)象類(lèi)型(見(jiàn)5.1節(jié))則會(huì)發(fā)生變化:o={name:‘cheng’}=‘xiao’;//name屬性已經(jīng)變?yōu)閤iao,而不是原來(lái)的cheng了。o.gender=‘male’;//對(duì)象o中已經(jīng)多了一個(gè)gender屬性,而不僅僅只有name屬性了這兩點(diǎn)性質(zhì)對(duì)于編程來(lái)說(shuō)至關(guān)重要,必須掌握。以上兩點(diǎn)說(shuō)明的程序代碼如清單4-2所示。清單4-2數(shù)據(jù)類(lèi)型的性質(zhì)演示s="hello";document.write("s全部轉(zhuǎn)換成大寫(xiě)字母后:"+s.toUpperCase()+"<br/>");document.write("原來(lái)的s仍然為:"+s+"<br/>");o={name:'cheng'};document.write("對(duì)象o只有name屬性,其值為"++"<br/>");document.write("對(duì)象o的gender屬性,其值為"+o.gender+"<br/>");="xiao";document.write("修改了對(duì)象o的name屬性,修改后的值為"++"<br/>");o.gender='male';document.write("對(duì)象o添加了gender屬性,其值為"+o.gender+"<br/>");以上代碼帶有自說(shuō)明性,只要根據(jù)輸出的說(shuō)明,就可以理解數(shù)據(jù)類(lèi)型的兩點(diǎn)性質(zhì)。document是JavaScript的內(nèi)置對(duì)象,可以直接使用,它表示當(dāng)前網(wǎng)頁(yè)中的文檔。write()方法用于在文檔(網(wǎng)頁(yè))中輸出指定的內(nèi)容。其中雙引號(hào)中的內(nèi)容原樣輸出,不在雙綽號(hào)中的為JS代碼,解釋器會(huì)計(jì)算它們的值并與字符串進(jìn)行連接。運(yùn)行結(jié)果如下所示:s全部轉(zhuǎn)換成大寫(xiě)字母后:HELLO原來(lái)的s仍然為:hello對(duì)象o只有name屬性,其值為cheng對(duì)象o的gender屬性,其值為undefined修改了對(duì)象o的name屬性,修改后的值為xiao對(duì)象o添加了gender屬性,其值為male大家對(duì)照前面的說(shuō)明與運(yùn)行結(jié)果,仔細(xì)理解這兩種數(shù)據(jù)的性質(zhì),對(duì)于JS實(shí)際編程是非常重要的。4.4變量
4.4.1變量聲明變量是用于存放數(shù)據(jù)值的“倉(cāng)庫(kù)”,JavaScript的變量不區(qū)分類(lèi)型,一律采用關(guān)鍵字var聲明(最新的ECMAScript6引入了關(guān)鍵字let聲明變量)。變量名必須是合法的JavaScript標(biāo)識(shí)符(見(jiàn)4.2.3節(jié))。也可以不用關(guān)鍵字var聲明,直接使用變量名,此時(shí)變量作為全局變量使用。舉例如下:vara,b;//聲明變量a和bc;//聲明全局變量cJavaScript變量可以存放任意類(lèi)型的數(shù)據(jù)。示例如下:vard=12;console.log(“d=”+d);//輸出12d=“HelloAjax”;console.log(“d=”+d);//輸出HelloAjaxconsole表示JavaScript的控制臺(tái),可以作為輸出結(jié)果的一種方式。這個(gè)控制臺(tái)在瀏覽器中,不同的瀏覽器位置不同,調(diào)用的方法也不同。在Chrome瀏覽器中,打開(kāi)方式如下:?jiǎn)螕魹g覽器右上角的
圖標(biāo),選擇“更多工具”→“開(kāi)發(fā)者工具”,選擇“Console”選項(xiàng)卡。這里說(shuō)的是Chrome瀏覽器的JavaScript控制臺(tái)。運(yùn)行上面的程序可以得到如下結(jié)果:由上面的程序?qū)φ者\(yùn)行結(jié)果,可以得到如下結(jié)論:◆變量由關(guān)鍵字var聲明;
◆變量不區(qū)別類(lèi)型可以存放任意類(lèi)型的數(shù)據(jù)。如示例中的變量d,先存放整數(shù)12,然后再存放字符串HelloAjax。4.4.2變量的分類(lèi)
JavaScript中變量分為兩類(lèi),一類(lèi)是局部變量,另一類(lèi)是全局變量。局部變量只在聲明的范圍內(nèi)有效,而全局變量對(duì)于所有的JavaScript程序都有效。1、全局變量的聲明
在任何函數(shù)之外聲明的變量為全局變量,如:varENTER_KEY=13;vartimer=null;另一種聲明全局變量的方法是,不使用var關(guān)鍵字,這種情況下,不論該變量位于哪個(gè)函數(shù)內(nèi)部,都是全局變量。如:functionabc(){//全局變量timertimer=setInterval(def);}這里的function是聲明函數(shù)的關(guān)鍵字,JavaScript函數(shù)5.5節(jié)介紹。2、局部變量的聲明
除以上兩種情況之外的變量都是局部變量。也可以說(shuō)是在函數(shù)中以var關(guān)鍵字聲明的變量都是局部變量。4.4.3變量的作用域所謂作用域(也稱(chēng)之為可見(jiàn)性)是指定義變量的程序代碼的區(qū)域。變量只在其作用域內(nèi)有效,出了作用域則變量不可見(jiàn),即不可訪(fǎng)問(wèn)。變量的作用域規(guī)則如下:◆全局變量對(duì)于所有應(yīng)用程序有效;
◆局部變量只對(duì)聲明它的區(qū)域有效
◆若局部變量的作用域內(nèi)有重名的全局變量,則局部變量?jī)?yōu)于全局變量,即局部變量作用域內(nèi),同名的全局變量不可見(jiàn)。下面舉例說(shuō)明。代碼如清單4-3所示代碼的運(yùn)行結(jié)果如下:這里需要說(shuō)明的是清單4-3的輸出結(jié)果在控制臺(tái)中,并不在網(wǎng)頁(yè)中,必須打開(kāi)JS的控制臺(tái)才能看到結(jié)果,網(wǎng)頁(yè)是空白的。打開(kāi)JS控制臺(tái)的方法見(jiàn)4.5節(jié)起始部分。輸出結(jié)果的右側(cè)是該輸出結(jié)果是源文件的哪條語(yǔ)句輸出的,如Listing4-3.html:4,說(shuō)明d=12是源文件中第4行的console.log()輸出的。請(qǐng)注意這里的第4行是指源文件Listing4-3.html中的行號(hào),并不是清單4-3中的行號(hào)。為了便于大家理解,下面列出清單中輸出語(yǔ)句的執(zhí)行順序:console.log("d="+d);//輸出12console.log("d="+d);//輸出HelloAjax//輸出變量b的值console.log("b="+b);然后是a函數(shù)中的三條輸出語(yǔ)句:console.log("函數(shù)a的輸出:d=%s",d);console.log("函數(shù)a的輸出:b=%d,c=%i,d=%s",b,c,d);//在for循環(huán)體外輸出變量i的值console.log("函數(shù)a的輸出:i=%i",i);最后是b函數(shù)中的輸出語(yǔ)句:console.log("函數(shù)b的輸出:d=%s",d);其中用到了函數(shù)的定義和調(diào)用、for循環(huán)和break語(yǔ)句,這些知識(shí)后續(xù)介紹。至于為什么是這種順序,這涉及到函數(shù)的定義和調(diào)用。如果實(shí)在不能明白,等學(xué)習(xí)完函數(shù)有關(guān)內(nèi)容后就會(huì)明白了。代碼已經(jīng)進(jìn)行了詳細(xì)注釋?zhuān)喿x代碼時(shí)請(qǐng)對(duì)照注釋以加深理解。下面對(duì)代碼中的要點(diǎn)說(shuō)明如下:◆JS變量存儲(chǔ)數(shù)據(jù)不區(qū)分類(lèi)型,如vard=12;先存放整數(shù)12,然后再執(zhí)行d=“HelloAjax”賦值語(yǔ)句存儲(chǔ)字符串?!羧肿兞康淖饔糜蚴钦麄€(gè)JS程序,并不局限于當(dāng)前的js文件。如全局變量d也可以在函數(shù)b中輸出它的值,盡管b函數(shù)沒(méi)有聲明變量d。
◆局部變量的作用域只局限于聲明它的范圍。如函數(shù)a中的變量c,只在a函數(shù)體內(nèi)有效,a函數(shù)體外則不可見(jiàn),如在a函數(shù)外用console.log("c=%d",c);輸出變量c,則出現(xiàn)錯(cuò)誤,因?yàn)樽兞縞未定義?!鬴or循環(huán)體中的變量i,其作用域不限于for循環(huán)體,而是整個(gè)a函數(shù),這與其他高級(jí)語(yǔ)言有所不同。所以在循環(huán)體外輸出變量i的值,就是for循環(huán)退出時(shí)的i值。
◆局部變量與全部變量重名的情況下,局部變量?jī)?yōu)于全局變量。即在局部變量作用域內(nèi),全局變量不可見(jiàn)。如在a函數(shù)體內(nèi)用vard="Anothervariabled";聲明變量d,它與全局變量d重名,則在a函數(shù)體內(nèi)可見(jiàn)的只有局部變量d,而不是全局變量d。在函數(shù)a內(nèi)輸出變量d的值為Anothervariabled,而不是全局變量的HelloAjax?!鬔S變量的自動(dòng)提前(Hoist)——JS變量的聲明無(wú)論位置在哪里,都會(huì)把聲明提前到作用域的最前面。如函數(shù)a中的以下兩句代碼:console.log("函數(shù)a的輸出:d=%s",d);v
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 江西省創(chuàng)智協(xié)作體2025-2026年高三上1月月考?xì)v史試卷(含答案)
- 河南省南陽(yáng)市十校2025-2026學(xué)年七年級(jí)上學(xué)期1月期末歷史試卷(含答案)
- 醫(yī)療質(zhì)量持續(xù)改進(jìn)與糾紛減少
- 醫(yī)療設(shè)備預(yù)防性維護(hù)計(jì)劃可持續(xù)優(yōu)化
- 醫(yī)療設(shè)備采購(gòu)國(guó)產(chǎn)化信息平臺(tái)構(gòu)建
- 預(yù)防醫(yī)學(xué)科疾病預(yù)防控制方案培訓(xùn)指南
- 醫(yī)療設(shè)備采購(gòu)供應(yīng)商動(dòng)態(tài)評(píng)估模型
- 認(rèn)識(shí)數(shù)字手抄報(bào)
- 護(hù)理教學(xué)資源:課件分享平臺(tái)
- 醫(yī)療設(shè)備管理中的風(fēng)險(xiǎn)識(shí)別與評(píng)估
- DZ∕T 0213-2020 礦產(chǎn)地質(zhì)勘查規(guī)范 石灰?guī)r、水泥配料類(lèi)(正式版)
- 醫(yī)院護(hù)理人文關(guān)懷實(shí)踐規(guī)范專(zhuān)家共識(shí)
- MOOC 跨文化交際通識(shí)通論-揚(yáng)州大學(xué) 中國(guó)大學(xué)慕課答案
- 人工智能在體育訓(xùn)練中的應(yīng)用與發(fā)展趨勢(shì)
- 三亞崖州灣科技城南海資源保護(hù)開(kāi)發(fā)與利用產(chǎn)業(yè)創(chuàng)新平臺(tái) 環(huán)評(píng)報(bào)告
- 沈陽(yáng)開(kāi)放大學(xué)招聘考試題庫(kù)2024
- 16 ADCampus解決方案微分段技術(shù)白皮書(shū)1.0
- 高校申報(bào)新專(zhuān)業(yè)所需材料匯總
- (機(jī)構(gòu)動(dòng)態(tài)仿真設(shè)計(jì))adams
- NB-T 31053-2021 風(fēng)電機(jī)組電氣仿真模型驗(yàn)證規(guī)程
- GB/T 1048-2019管道元件公稱(chēng)壓力的定義和選用
評(píng)論
0/150
提交評(píng)論