JavaScript有七種內置類型:
- 空值(null)
- 未定義(undefined)
- 布爾值(boolean)
- 數字(number)
- 字符串(string)
- 對象(object)
- 符號(symbol,ES6中新增)
除對象之外,其他統稱爲“基本類型”。可以通過typeof運算符來查看值的類型,它返回的是類型的字符串值。但是,這七種類型和它們的字符串值並不一一對應:
typeof undefined === "undefined"; // true
typeof true === "boolean"; // true
typeof 42 === "number"; // true
typeof "42" === "string"; // true
typeof { life: 42 } === "object"; // true
// ES6中新加入的類型
typeof Symbol() === "symbol"; // true
以上六種類型均有同名的字符串值與之對應。但typeof對null的處理如下:
typeof null === "object"; // true
所以我們需要使用複合條件檢測null的類型:
var a = null;
(!a && typeof a === "object"); // true
null 是基本類型中唯一的一個“假值”類型,typeof對它的返回值爲”object”。
除此之外,還有兩種特殊的類型:
typeof function a(){ /* .. */ } === "function"; // true
typeof [1,2,3] === "object"; // true
因此,function(函數)與數組都是object的“子類型”,函數對象的length屬性是其聲明的參數的個數,數組的length 屬性是元素的個數。
function a(b,c) {
/* .. */
}
a.length; // 2