概述
JavaScript是弱類型語言,但不是沒有數(shù)據(jù)類型,JavaScript規(guī)定了五種簡單的數(shù)據(jù)類型
- (1)數(shù)值(Number):整數(shù)和小數(shù)(比如1和3.14)
- (2)字符串(String):字符組成的文本(比如'Hello World')
- (3)布爾值(Boolean):true(真)和false(假)兩個(gè)特定值
- (4)Undefined:表示“未定義”或不存在,即由于目前沒有定義,所以此處暫時(shí)沒有任何值
- (5)Null:表示無值,即此處的值就是“無”的狀態(tài)。
還有一種復(fù)雜的數(shù)據(jù)類型--Object,Object本質(zhì)上是一組無序的名值對組合
對象又可以分成三個(gè)子類型。
- 狹義的對象(object)
- 數(shù)組(array)
- 函數(shù)(function)
typeof運(yùn)算符
-
(1)原始類型
數(shù)值、字符串、布爾值分別返回number、string、boolean。
typeof 123 // "number"
typeof '123' // "string"
typeof false // "boolean"
-
(2)undefined
undefined返回undefined。
typeof undefined
// "undefined"
利用這一點(diǎn),typeof可以用來檢查一個(gè)沒有聲明的變量,而不報(bào)錯(cuò)。
v
// ReferenceError: v is not defined
typeof v
// "undefined"
上面代碼中,變量v沒有用var命令聲明,直接使用就會(huì)報(bào)錯(cuò)。但是,放在typeof后面,就不報(bào)錯(cuò)了,而是返回undefined。
實(shí)際編程中,這個(gè)特點(diǎn)通常用在判斷語句。
// 錯(cuò)誤的寫法
if (v) {
// ...
}
// ReferenceError: v is not defined
// 正確的寫法
if (typeof v === "undefined") {
// ...
}
(3)其他
除此以外,其他情況都返回object。
typeof window // "object"
typeof {} // "object"
typeof [] // "object"
typeof null // "object"
從上面代碼可以看到,空數(shù)組([])的類型也是object,這表示在JavaScript內(nèi)部,數(shù)組本質(zhì)上只是一種特殊的對象。