- JavaScript從入門到精通(第3版)
- 明日科技
- 2318字
- 2020-03-20 10:37:28
2.1 數據類型
在JavaScript腳本語言中,采用的是弱類型的方式,即一個數據(變量或常量)不必先作聲明,可在使用或賦值時再確定其數據的類型。當然,也可以先聲明該數據的類型,即賦值時說明其數據類型。本節將詳細介紹JavaScript腳本中的幾種數據類型。
2.1.1 數值型
數值(Number)是最基本的數據類型。JavaScript和其他程序設計語言(如C和Java)的不同之處在于,它并不區別整型數值和浮點型數值,所有的數字都是由浮點型表示的。JavaScript采用IEEE754標準定義的64位浮點格式表示數字,這意味著它能表示的最大值是±1.7976931348623157×10308,最小值是±5×10-324。
當一個數字直接出現在JavaScript程序中時,稱之為數值直接量(Numeric Literal)。JavaScript支持數值直接量的形式有以下3種,下面對其進行詳細介紹。
注意
在任何數值直接量前加負號(-),可以構成它的負數。負號是一元求反運算符,不是數值直接量語法的一部分。
1.整型數據
在JavaScript程序中,十進制的整數是一個數字序列,例如:
0 7 -8 1000
JavaScript的數字格式允許精確地表示-900719925474092(-253)和900719925474092(253)之間的所有整數,包括-900719925474092(-253)和900719925474092(253)。使用超過這個范圍的整數,就會失去尾數的精確性。需要注意的是,JavaScript中的某些整數運算是對32位的整數執行的,它們的范圍為-2147483648(-231)~2147483647(231-1)。
2.十六進制和八進制
JavaScript不但能夠處理十進制的整型數據,還能識別十六進制(以16為基數)的數據。所謂十六進制數據,是以0X和0x開頭,其后跟隨十六進制數字串的直接量。十六進制的數字可以是0~9中的某個數字,也可以是a(A)~f(F)中的某個字母,用來表示0~15(包括0和15)的某個值。下面是十六進制整型數據的例子。
0xff //15*16+15=255(基數為10) 0xCAFE911
盡管ECMAScript標準不支持八進制數據,但JavaScript的某些實現卻允許采用八進制(基數為8)格式的整型數據。八進制數據以數字0開頭,其后跟隨一個數字序列,這個序列中的每個數字都在0~7(包括0和7)。例如:
0377 //3*64+7*8+7=255(基數為10)
由于某些JavaScript實現支持八進制數據,有些不支持,因此最好不要使用以0開頭的整型數據,因為不知道具體的JavaScript實現是將其解釋為十進制,還是解釋為八進制。
3.浮點型數據
浮點型數據可以具有小數點,采用的是傳統科學記數法的語法。一個實數值可以被表示為整數部分后加小數點和小數部分。
此外,還可以使用指數法表示浮點型數據,即實數后跟隨字母e或E,后面加上正負號,其后再加上一個整型指數。這種記數法表示的數值等于前面的實數乘以10的指數次冪,語法格式如下:
[digits] [.digits] [(E|e[(+|-)])]
例如:
1.2 .33333333 3.12e11 //3.12×1011 1.234E﹣12 //1.234×10-12
注意
雖然實數有無窮多個,但是JavaScript的浮點格式能夠精確表示出來的卻是有限的(確切地說是18437736874454810627個),這意味著在JavaScript中使用實數時,數字通常是真實數字的近似值。不過即使是近似值,也足夠用了。
2.1.2 字符串型
字符串(String)是由Unicode字符、數字、標點符號等組成的序列,它是JavaScript用來表示文本的數據類型。程序中的字符串型數據是包含在單引號或雙引號中的,由單引號定界的字符串中可以含有雙引號,由雙引號定界的字符串中也可以含有單引號。
(1)單引號括起來的一個或多個字符,代碼如下:
'啊' '活著的人卻擁有著一顆沉睡的心'
(2)雙引號括起來的一個或多個字符,代碼如下:
"呀" "我想學習JavaScript"
(3)單引號定界的字符串中可以含有雙引號,代碼如下:
'name="myname"'
(4)雙引號定界的字符串中可以含有單引號,代碼如下:
"You can call me 'Tom'!"
【例2.1】 下面分別定義4個字符串。(實例位置:資源包\TM\sl\2\01)
代碼如下:

執行上面的代碼,運行結果如圖2.1所示。

圖2.1 運行結果
由上面的實例可以看出,單引號內出現雙引號或雙引號內出現單引號時,不需要進行轉義。但是,雙引號內出現雙引號或單引號內出現單引號,則必須進行轉義(轉義字符將在2.1.4節中詳細講解)。
2.1.3 布爾型
數值和字符串兩種數據類型的值都無窮多個,但是布爾數據類型的值只有兩個,分別由直接量true和false表示,用來說明某個事物是真還是假。
布爾值通常在JavaScript程序中用來比較所得的結果,例如:
n==1
這行代碼測試了變量n的值是否和數值1相等。如果相等,比較的結果就是布爾值true,否則結果就是false。
布爾值通常用于JavaScript的控制結構。例如,JavaScript的if…else語句就是在布爾值為true時執行一個動作,在布爾值為false時執行另一個動作。通常將創建布爾值與使用布爾值進行比較的語句結合在一起。例如:

本段代碼檢測了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.轉義字符
以反斜杠開頭的不可顯示的特殊字符通常稱為控制字符,也被稱為轉義字符。通過轉義字符可以在字符串中添加不可顯示的特殊字符,或者防止引號匹配混亂的問題。JavaScript常用的轉義字符如表2.1所示。
表2.1 JavaScript常用的轉義字符

在“document.writeln();”語句中使用轉義字符時,只有將其放在格式化文本塊中才會起作用,所以腳本必須在<pre>和</pre>標記內。
例如,下面應用轉義字符使字符串換行,程序代碼如下:
document.writeln("<pre>"); document.writeln("輕松學習\nJavaScript語言!"); document.writeln("</pre>");
運行結果為:
輕松學習 JavaScript語言!
如果上述代碼不使用<pre>和</pre>標記,則轉義字符不起作用。
document.writeln("快快樂樂\n平平安安!");
上述代碼的運行結果為:
快快樂樂平平安安!
2.未定義值
未定義類型的變量是undefined,表示變量還沒有賦值(如“var a;”),或者被賦予了一個不存在的屬性值(如“var a=String.notProperty;”)。
此外,JavaScript中有一種特殊類型的數字常量NaN,即“非數字”。當在程序中由于某種原因發生計算錯誤后,將產生一個沒有意義的數字,此時JavaScript返回的數字值就是NaN。
3.空值(null)
JavaScript中的關鍵字null是一個特殊的值,表示為空值,用于定義空的或不存在的引用。如果試圖引用一個沒有定義的變量,則返回一個null值。需要注意的是,null不等同于空的字符串(" ")或0。
由此可見,null與undefined的區別是:null表示一個變量被賦予了一個空值,而undefined則表示該變量尚未被賦值。
- 零基礎學C++程序設計
- Learning Real-time Processing with Spark Streaming
- C#完全自學教程
- Visual Basic程序設計教程
- BeagleBone Media Center
- Hands-On RESTful Web Services with Go
- Python機器學習經典實例
- Visual FoxPro程序設計習題集及實驗指導(第四版)
- 移動互聯網軟件開發實驗指導
- Spring Boot+MVC實戰指南
- JavaScript應用開發實踐指南
- Android Development Tools for Eclipse
- JavaScript從入門到精通(視頻實戰版)
- 算法圖解
- PHP+MySQL Web應用開發教程