ECMAScript包括兩個不一樣類型的值:基本數據類型和引用數據類型正則表達式
String、 Number、 Boolean、 Null、 Undefined、 Symbol (ECMAScript 6 新定義)bash
基本數據類型是指存放在棧中的簡單數據段,數據大小肯定,內存空間大小能夠分配,它們是直接按值存放的,因此能夠直接按值訪問。函數
Object(在JS中除了基本數據類型之外的都是對象,數據是對象,函數是對象,正則表達式是對象)。spa
引用類型是存放在堆內存中的對象,變量實際上是保存的在棧內存中的一個指針(保存的是堆內存中的引用地址),這個指針指向堆內存prototype
> typeof "abc" "string" 字符串
> typeof abc "undefined" 未定義
> typeof 0 "number" 數值
> typeof null "object" 對象或者 null
> typeof console.log "function" 函數
> typeof true "boolean" 布爾類型值
複製代碼
用這個方法來判斷數據類型目前是最可靠的了,它總能返回正確的值指針
該方法返回 "[object type]", 其中type是對象類型。code
Object.prototype.toString.call(null) "[object Null]"
Object.prototype.toString.call([]); "[object Array]"
Object.prototype.toString.call({}); "[object Object]"
Object.prototype.toString.call(123); "[object Number]"
Object.prototype.toString.call('123'); "[object String]"
Object.prototype.toString.call(false); "[object Boolean]"
Object.prototype.toString.call(undefined); "[object Undefined]"
複製代碼
String Boolean Number Undefined 四種基本類型的判斷 除了 Null 以外的這四種基本類型值,均可以用 typeof 操做符很好的進行判斷處理。對象
除了 Object.prototype.toString.call(null) 以外,目前最好的方法就是用 variable === null 全等來判斷了。ip
var a = null;
if (a === null) {
console.log('a is null');
}
// a is null
a is null
複製代碼