JS 型別

lazy_boy發表於2018-05-26

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 型別

  1. 會把其他進位制轉換為十進位制輸出。
  2. 會根據浮點數小數的有無,轉換為相關的數值。
    比如:
var floatNum1 = 1.0; 整數解析為 10
複製程式碼
  1. 如果是 Boolean 值,true和false將分別轉換為 1 和 0;
  2. 如果是數字值只是簡單的傳入和返回
  3. 如果是 null 值,返回 0
  4. 如果是 undefined,返回 NaN

String 型別

String 型別用於表示由零個或多個16位 Unicode字元組成的字元序列,即字串。

Object 型別

相關文章