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

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

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

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

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

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

圖2.4 換行輸出字符串
如果上述代碼不使用<pre>和</pre>的標簽,則轉義字符不起作用,代碼如下:
document.write("輕松學習\nJavaScript語言!"); //輸出字符串
運行結果為:
輕松學習 JavaScript語言!
【例2.03】在<pre>和</pre>的標簽內使用轉義字符,分別輸出前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>
實例運行結果如圖2.5所示。

圖2.5 輸出奧尼爾的中文名、英文名和別名
由上面的實例可以看出,在單引號定義的字符串內出現單引號,必須進行轉義才能正確輸出。
2.1.3 布爾型
數值數據類型和字符串數據類型的值都無窮多,但是布爾數據類型只有兩個值,一個是true(真),一個是false(假),它說明了某個事物是真還是假。
布爾值通常在JavaScript程序中用來作為比較所得的結果。例如:
n==1
這行代碼測試了變量n的值是否和數值1相等。如果相等,比較的結果就是布爾值true,否則結果就是false。
布爾值通常用于JavaScript的控制結構。例如,JavaScript的if/else語句就是在布爾值為true時執行一個動作,而在布爾值為false時執行另一個動作。通常將一個創建布爾值與使用這個比較的語句結合在一起。例如:
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轉換成1,將false轉換成0)。
2.1.4 特殊數據類型
1.未定義值
未定義值就是undefined,表示變量還沒有賦值(如“var a;”)。
2.空值(null)
JavaScript中的關鍵字null是一個特殊的值,它表示為空值,用于定義空的或不存在的引用。這里必須要注意的是,null不等同于空的字符串("")或0。當使用對象進行編程時可能會用到這個值。
由此可見,null與undefined的區別是,null表示一個變量被賦予了一個空值,而undefined則表示該變量尚未被賦值。
- iOS Game Programming Cookbook
- 微服務與事件驅動架構
- Android Studio Essentials
- Bulma必知必會
- Learning Linux Binary Analysis
- Mastering macOS Programming
- 深入淺出Go語言編程
- 從零開始學Python網絡爬蟲
- Practical Microservices
- Python趣味編程與精彩實例
- MATLAB 2020 GUI程序設計從入門到精通
- R語言:邁向大數據之路
- Learn C Programming
- C++ Data Structures and Algorithm Design Principles
- Effective DevOps with AWS