typeof 操作符
鑑於 ECMAScript 是鬆散型別的,因此需要有一種手段來檢測給定變數的資料型別 ----typeof 就是負責提供這方面資訊的操作符。對於一個值使用 typeof 操作符可能返回下列某個字串:
- undefined --- 如果這個值沒有定義
- boolean --- 如果這個值是 boolean 值
- string --- 如果這個值是字串
- number --- 如果這個值是數值
- object --- 如果這個值是物件或者 null
- function --- 如果這個值是函式
例如:
var message = null;
console.log(typeof message);
複製程式碼
typeof 是一個操作符,而不是一個函式。呼叫之後返回的是這個變數的型別,屬於什麼型別。
undefined 型別
undefined 型別只有一個值,即特殊的 undefined。在使用 var 宣告變數但未對其加以初始化時,這個變數的值就是undefined,例如:
var message;
console.log(typeof message);
列印出:undefined
複製程式碼
對未初始化的變數執行 typeof 操作符會返回 undefined值,而對未宣告的變數執行 typeof 操作符同樣也會返回 undefined 值。 例如:
console.log(typeof message);
輸出列印:undefined
複製程式碼
Null 型別
Null 型別是第二個只有一個值的資料型別,這個特殊的值是 null。從邏輯角度來看,null值表示一個空物件指標,而這也正是使用 typeof 操作符檢測 null 值時會返回 "object"的原因
var car = null;
console.log(typeof car);
列印出:object
複製程式碼
null 表示是一個空物件指標。 如果定義的變數準備在將來用於儲存物件,那麼最好將該變數初始化為 null 而不是其他值。這樣一來只要直接檢查 null 就可以知道相應的變數是否已經儲存了一個物件的引用。 例如:
var car = null;
if (car != null) {
console.log("對car物件執行某些操作");
}
複製程式碼
undefined 是派生自 null 值的,因此相等性測試是返回 true。
Boolean 型別
Boolean 只有兩種型別 true 和 false,這兩個值和數字值不是一回事,因此 true 不一定等於 1,而 false 也不一定的等於 0。而且這個兩個值是區分大小寫的,也就是說 True 和 False (以及其他的混合大小寫形式)都不是 Boolean 值,只是識別符號。可以對任何資料型別的值呼叫 Boolean(函式),而且總會返回一個Boolean值。至於返回的這個值是 true 還是 false,取決於要轉換值的資料型別及實際值。轉換規則如下:
* String 非空字串->true 空字串("")->false
* Number 任何非零數字值(包括無窮大)-> true 0和NaN->false
* Object 任何物件->true null->false
複製程式碼
Number 型別
- 會把其他進位制轉換為十進位制輸出。
- 會根據浮點數小數的有無,轉換為相關的數值。
比如:
var floatNum1 = 1.0; 整數解析為 10
複製程式碼
- 如果是 Boolean 值,true和false將分別轉換為 1 和 0;
- 如果是數字值只是簡單的傳入和返回
- 如果是 null 值,返回 0
- 如果是 undefined,返回 NaN
String 型別
String 型別用於表示由零個或多個16位 Unicode字元組成的字元序列,即字串。