Ⅰ 01 JS的數據類型及如何判斷數據類型
在 ES5 中,存在 6 種數據類型。
基本類型(值類型): String、Number、Boolean、undefined、null
對象類型(引用類型):Object,其中 Object 有三種特殊的對象(Function、Array、Date)
PS: undefined 和 null 的第一個字母都是小寫
Q: undefined 和 null 有什麼區別?
A: 當一個變數被聲明,但是還沒有賦值的時候,則為 undefined.
當一個變數被聲明了,並且已經賦值了,賦的值為 null,則為 null
根本區別就是在於在聲明的時候有沒有被賦值
常用的判斷數據類型的方法
劃重點!!! typeof(xxx) 返回的是一個字元串
舉個栗子1
舉個栗子2
舉個栗子3
typeof 可以判斷以上 4 中基本類型(Number、String、Boolean、undefined)
判斷不了 null 類型
舉個栗子4
是不是很奇怪?null 作為基礎類型,但是在判斷類型的時候卻為 object?
其實設計者是這么想的,他先定義了一個變數,這個變數是准備賦運猛值為對象的,由於某些原因,比如對象的屬性還不清楚,所以一開始就給變數賦值為 null,表明這個變數將來是個對象。
null 還有另外一個作用,在最後的時候,給變數賦值為 null,可以讓變數指向的對象成為垃圾對象,從而被垃圾回收器回收。
上面的例子證明,null 類型和 對象類型通過 typeof 是無法區分的。
沒錯,JS 的開發者就是不想讓你們這么好過,只記住一個規矩就想闖天下了嗎??? Naive!!!
為了讓你們多學點本領,於是就有了 instanceof
instanceof 字面意思就是實例。a instanceof b, a 是 b 的實例,b 為 構造函數旁弊橋 。返回值為 布爾值
實現原理是通過檢測 b.prototype 是否存在於 a 的原型鏈上
舉個栗子1
但是吧,你想用來判斷 null 類型,不好意思,直接報錯, null 並不是一個對象
先看完下面的例子,再來看怎麼判斷 null
下面看個有迷惑行為的例子
言歸正傳,怎麼說來說去都沒說怎麼判斷是不是 null 類型
===
直接上全等於 === 不就好了嘛,就是這么簡單快捷!!!
typeof:
可以判斷除了 null 之外的值類型 Number、String、Boolean、undefined
還卜御可以判斷一個引用類型 Function
不能區分: null 和 Object
instanceof:
判斷對象的具體類型
===
判斷 undefined 和 null
一般情況下,使用 typeof 去判斷就可以了。
當確定是 Object 類型的數據,則使用 instanceof 去具體區分是屬於 Function/Array/Date 的哪種類型
很多情況下,都要判斷數據不能為 undefined 和 null,那就可以直接判斷 xxx !== undefined &&& xxx !== null
Ⅱ js判斷 null、undefined、數字零、NaN、false、空字元串的方法
說明:typeof 返回的是字元串,有 8 種可能:"number"、"string"、"boolean"、"object"碼知、"function"、"undefined" 、"bigint"、"symbol"
提示:isNaN() 函數通察橡常用於檢測 parseFloat() 和 parseInt() 的結果,以判斷它們表示的是否是合法的遲沒消數字。當然也可以用 isNaN() 函數來檢測算數錯誤,比如用 0 作除數的情況。
Ⅲ JS中如何判斷一個變數的數據類型為null
方法
//灶好判斷是否是拿辯正Nullfunction isNull(obj){ return obj === null;
}//判斷是否是NaNfunction isNaN(obj){ return obj !== obj;
}//判斷是否是消悔undefinedfunction isUndefined(obj){ return obj === void 0;
}`