- JavaScript從入門到精通(微視頻精編版)
- 明日科技
- 3290字
- 2020-09-01 15:02:20
2.1 數(shù)據(jù)類型

視頻講解
JavaScript的數(shù)據(jù)類型分為基本數(shù)據(jù)類型和復合數(shù)據(jù)類型。關于復合數(shù)據(jù)類型中的對象、數(shù)組和函數(shù)等,將在后面的章節(jié)進行介紹。在本節(jié)中,將詳細介紹JavaScript的基本數(shù)據(jù)類型。JavaScript的基本數(shù)據(jù)類型有數(shù)值型、字符串型、布爾型以及兩個特殊的數(shù)據(jù)類型。
2.1.1 數(shù)值型
數(shù)值型(number)是JavaScript中最基本的數(shù)據(jù)類型。JavaScript和其他程序設計語言(如C語言和Java)的不同之處在于,它并不區(qū)別整型數(shù)值和浮點型數(shù)值。在JavaScript中,所有的數(shù)值都是由浮點型表示的。JavaScript采用IEEE754標準定義的64位浮點格式表示數(shù)字,這意味著它能表示的最大值是1.7976931348623157e+308,最小值是5e-324。
當一個數(shù)字直接出現(xiàn)在JavaScript程序中時,我們稱它為數(shù)值直接量(numeric literal)。JavaScript支持數(shù)值直接量的形式有幾種,下面將對這幾種形式進行詳細介紹。
注意
在任何數(shù)值直接量前加負號(-)可以構(gòu)成它的負數(shù)。但是負號是一元求反運算符,它不是數(shù)值直接量語法的一部分。
1.十進制
在JavaScript程序中,十進制的整數(shù)是一個由0~9組成的數(shù)字序列。例如:
0 6 -2 100
JavaScript的數(shù)字格式允許精確地表示-900719925474092(-253)和900719925474092(253)之間的所有整數(shù)(包括-900719925474092(-253)和900719925474092(253))。但是使用超過這個范圍的整數(shù),就會失去尾數(shù)的精確性。需要注意的是,JavaScript中的某些整數(shù)運算是對32位的整數(shù)執(zhí)行的,它們的范圍從-2147483648(-231)到2147483647(231-1)。
2.八進制
盡管ECMAScript標準不支持八進制數(shù)據(jù),但是JavaScript的某些實現(xiàn)卻允許采用八進制(以8為基數(shù))格式的整型數(shù)據(jù)。八進制數(shù)據(jù)以數(shù)字0開頭,其后跟隨一個數(shù)字序列,這個序列中的每個數(shù)字都在0和7之間(包括0和7),例如:
07 0366
由于某些JavaScript實現(xiàn)支持八進制數(shù)據(jù),而有些則不支持,所以最好不要使用以0開頭的整型數(shù)據(jù),因為不知道某個JavaScript的實現(xiàn)是將其解釋為十進制,還是解釋為八進制。
3.十六進制
JavaScript不但能夠處理十進制的整型數(shù)據(jù),還能識別十六進制(以16為基數(shù))的數(shù)據(jù)。所謂十六進制數(shù)據(jù),是以“0X”或“0x”開頭,其后跟隨十六進制的數(shù)字序列。十六進制的數(shù)字可以是0到9中的某個數(shù)字,也可以是a(A)到f(F)中的某個字母,它們用來表示0到15之間(包括0和15)的某個值,下面是十六進制整型數(shù)據(jù)的例子:
0xff 0X123 0xCAFE911
【例2.01】網(wǎng)頁中的顏色RGB代碼是以十六進制數(shù)字表示的。例如,在顏色代碼#6699FF中,十六進制數(shù)字66表示紅色部分的色值,十六進制數(shù)字99表示綠色部分的色值,十六進制數(shù)字FF表示藍色部分的色值。在頁面中分別輸出RGB顏色#6699FF的3種顏色的色值。代碼如下:(實例位置:資源包\源碼\02\2.01)
01 <script type="text/javascript"> 02 document.write("RGB顏色#6699FF的3種顏色的色值分別為:"); //輸出字符串 03 document.write("<p>R:"+0x66); //輸出紅色色值 04 document.write("<br>G:"+0x99); //輸出綠色色值 05 document.write("<br>B:"+0xFF); //輸出藍色色值 06 </script>
執(zhí)行上面的代碼,運行結(jié)果如圖2.1所示。

圖2.1 輸出RGB顏色#6699FF的3種顏色的色值
4.浮點型數(shù)據(jù)
浮點型數(shù)據(jù)可以具有小數(shù)點,它的表示方法有以下兩種。
(1)傳統(tǒng)記數(shù)法
傳統(tǒng)記數(shù)法是將一個浮點數(shù)分為整數(shù)部分、小數(shù)點和小數(shù)部分,如果整數(shù)部分為0,可以省略整數(shù)部分。例如:
1.2 56.9963 .236
(2)科學記數(shù)法
此外,還可以使用科學記數(shù)法表示浮點型數(shù)據(jù),即實數(shù)后跟隨字母e或E,后面加上一個帶正號或負號的整數(shù)指數(shù),其中正號可以省略。例如:
6e+3 3.12e11 1.234E-12
說明
在科學記數(shù)法中,e(或E)后面的整數(shù)表示10的指數(shù)次冪,因此,這種記數(shù)法表示的數(shù)值等于前面的實數(shù)乘以10的指數(shù)次冪。
【例2.02】輸出“3e+6”“3.5e3”“1.236E-2”這3種不同形式的科學記數(shù)法表示的浮點數(shù),代碼如下:(實例位置:資源包\源碼\02\2.02)
01 <script type="text/javascript"> 02 document.write("科學記數(shù)法表示的浮點數(shù)的輸出結(jié)果:"); //輸出字符串 03 document.write("<p>"); //輸出段落標記 04 document.write(3e+6); //輸出浮點數(shù) 05 document.write("<br>"); //輸出換行標記 06 document.write(3.5e3); //輸出浮點數(shù) 07 document.write("<br>"); //輸出換行標記 08 document.write(1.236E-2); //輸出浮點數(shù) 09 </script>
執(zhí)行上面的代碼,運行結(jié)果如圖2.2所示。

圖2.2 輸出科學記數(shù)法表示的浮點數(shù)
5.特殊值Infinity
在JavaScript中有一個特殊的數(shù)值Infinity(無窮大),如果一個數(shù)值超出了JavaScript所能表示的最大值的范圍,JavaScript就會輸出Infinity;如果一個數(shù)值超出了JavaScript所能表示的最小值的范圍,JavaScript就會輸出-Infinity。例如:
01 document.write(1/0); //輸出1除以0的值 02 document.write("<br>"); //輸出換行標記 03 document.write(-1/0); //輸出-1除以0的值
運行結(jié)果為:
Infinity -Infinity
6.特殊值NaN
JavaScript中還有一個特殊的數(shù)值NaN(Not a Number的簡寫),即“非數(shù)字”。在進行數(shù)學運算時產(chǎn)生了未知的結(jié)果或錯誤,JavaScript就會返回NaN,它表示該數(shù)學運算的結(jié)果是一個非數(shù)字。例如,用0除以0的輸出結(jié)果就是NaN,代碼如下:
alert(0/0); //輸出0除以0的值
運行結(jié)果為:
NaN
2.1.2 字符串型
字符串(string)是由0個或多個字符組成的序列,它可以包含大小寫字母、數(shù)字、標點符號或其他字符,也可以包含漢字。它是JavaScript用來表示文本的數(shù)據(jù)類型。程序中的字符串型數(shù)據(jù)是包含在單引號或雙引號中的,由單引號定界的字符串中可以含有雙引號,由雙引號定界的字符串中也可以含有單引號。
說明
空字符串不包含任何字符,也不包含任何空格,用一對引號表示,即""或''。
例如:
(1)單引號括起來的字符串,代碼如下:
'你好JavaScript' 'mingrisoft@mingrisoft.com'
(2)雙引號括起來的字符串,代碼如下:
" " "你好JavaScript"
(3)單引號定界的字符串中可以含有雙引號,代碼如下:
'abc"efg' '你好"JavaScript"'
(4)雙引號定界的字符串中可以含有單引號,代碼如下:
"I'm legend" "You can call me 'Tom'!"
注意
包含字符串的引號必須匹配,如果字符串前面使用的是雙引號,那么在字符串后面也必須使用雙引號,反之都使用單引號。
有的時候,字符串中使用的引號會產(chǎn)生匹配混亂的問題。例如:
"字符串是包含在單引號'或雙引號"中的"
對于這種情況,必須使用轉(zhuǎn)義字符。JavaScript中的轉(zhuǎn)義字符是“\”,通過轉(zhuǎn)義字符可以在字符串中添加不可顯示的特殊字符,或者防止引號匹配混亂的問題。例如,字符串中的單引號可以使用“\'”來代替,雙引號可以使用“\"”來代替。因此,上面一行代碼可以寫成如下的形式:
"字符串是包含在單引號\'或雙引號\"中的"
JavaScript常用的轉(zhuǎn)義字符如表2.1所示。
表2.1 JavaScript常用的轉(zhuǎn)義字符

例如,在alert語句中使用轉(zhuǎn)義字符“\n”的代碼如下:
alert("網(wǎng)頁設計基礎:\nHTML\nCSS\nJavaScript"); //輸出換行字符串
運行結(jié)果如圖2.3所示。

圖2.3 換行輸出字符串
由圖2.3可知,轉(zhuǎn)義字符“\n”在警告框中會產(chǎn)生換行,但是在“document.write();”語句中使用轉(zhuǎn)義字符時,只有將其放在格式化文本塊中才會起作用,所以腳本必須放在<pre>和</pre>的標簽內(nèi)。
例如,下面是應用轉(zhuǎn)義字符使字符串換行,程序代碼如下:
01 document.write("<pre>"); //輸出<pre>標記 02 document.write("輕松學習\nJavaScript語言!"); //輸出換行字符串 03 document.write("</pre>"); //輸出</pre>標記
運行結(jié)果如圖2.4所示。

圖2.4 換行輸出字符串
如果上述代碼不使用<pre>和</pre>的標簽,則轉(zhuǎn)義字符不起作用,代碼如下:
document.write("輕松學習\nJavaScript語言!"); //輸出字符串
運行結(jié)果為:
輕松學習 JavaScript語言!
【例2.03】在<pre>和</pre>的標簽內(nèi)使用轉(zhuǎn)義字符,分別輸出前NBA球星奧尼爾的中文名、英文名以及別名,關鍵代碼如下:(實例位置:資源包\源碼\02\2.03)
01 <script type="text/javascript"> 02 document.write('<pre>'); //輸出<pre>標記 03 document.write('中文名:沙奎爾·奧尼爾'); //輸出奧尼爾中文名 04 document.write('\n英文名:Shaquille O\'Neal'); //輸出奧尼爾英文名 05 document.write('\n別名:大鯊魚'); //輸出奧尼爾別名 06 document.write('</pre>'); //輸出</pre>標記 07 </script>
實例運行結(jié)果如圖2.5所示。

圖2.5 輸出奧尼爾的中文名、英文名和別名
由上面的實例可以看出,在單引號定義的字符串內(nèi)出現(xiàn)單引號,必須進行轉(zhuǎn)義才能正確輸出。
2.1.3 布爾型
數(shù)值數(shù)據(jù)類型和字符串數(shù)據(jù)類型的值都無窮多,但是布爾數(shù)據(jù)類型只有兩個值,一個是true(真),一個是false(假),它說明了某個事物是真還是假。
布爾值通常在JavaScript程序中用來作為比較所得的結(jié)果。例如:
n==1
這行代碼測試了變量n的值是否和數(shù)值1相等。如果相等,比較的結(jié)果就是布爾值true,否則結(jié)果就是false。
布爾值通常用于JavaScript的控制結(jié)構(gòu)。例如,JavaScript的if/else語句就是在布爾值為true時執(zhí)行一個動作,而在布爾值為false時執(zhí)行另一個動作。通常將一個創(chuàng)建布爾值與使用這個比較的語句結(jié)合在一起。例如:
01 if (n==1) //如果n的值等于1 02 m=m+1; //m的值加1 03 else 04 n=n+1; //n的值加1
本段代碼檢測n是否等于1。如果相等,就給m的值加1,否則給n的值加1。
有時候可以把兩個可能的布爾值看作是on(true)和off(false),或者看作是yes(true)和no(false),這樣比將它們看作是true和false更為直觀。有時候把它們看作是1(true)和0(false)會更加有用(實際上JavaScript確實是這樣做的,在必要時會將true轉(zhuǎn)換成1,將false轉(zhuǎn)換成0)。
2.1.4 特殊數(shù)據(jù)類型
1.未定義值
未定義值就是undefined,表示變量還沒有賦值(如“var a;”)。
2.空值(null)
JavaScript中的關鍵字null是一個特殊的值,它表示為空值,用于定義空的或不存在的引用。這里必須要注意的是,null不等同于空的字符串("")或0。當使用對象進行編程時可能會用到這個值。
由此可見,null與undefined的區(qū)別是,null表示一個變量被賦予了一個空值,而undefined則表示該變量尚未被賦值。
- 案例式C語言程序設計
- JavaScript高效圖形編程
- Dynamics 365 Application Development
- Visual Basic編程:從基礎到實踐(第2版)
- C/C++常用算法手冊(第3版)
- Internet of Things with Intel Galileo
- 用Flutter極速構(gòu)建原生應用
- Hands-On Enterprise Automation with Python.
- Building a Quadcopter with Arduino
- 精通Linux(第2版)
- 表哥的Access入門:以Excel視角快速學習數(shù)據(jù)庫開發(fā)(第2版)
- RESTful Java Web Services(Second Edition)
- C#程序設計(項目教學版)
- Android Game Programming by Example
- Mudbox 2013 Cookbook