JavaScript typeof 運算子

admin發表於2018-09-01

在JavaScript中,如果要判斷資料型別,估計第一個想到的就是typeof運算子。

因為它不僅從長相看具有做此事的能力,也確實有一定的執行力。

程式碼例項如下:

[JavaScript] 純文字檢視 複製程式碼執行程式碼
console.log(typeof 5);

程式碼執行效果截圖如下:

a:3:{s:3:\"pic\";s:43:\"portal/201809/01/104515nre3o8mzg3yed6r8.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

非常的完美,可以準確的列印出數字5的資料型別。

再來看一段程式碼例項:

[JavaScript] 純文字檢視 複製程式碼執行程式碼
let arr=[];
console.log(typeof arr);

程式碼執行效果截圖如下:

a:3:{s:3:\"pic\";s:43:\"portal/201809/01/104550s545vjpjwp42zspo.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

陣列確實也是object型別,但是我們更希望它能夠更為精確的列印出資料型別。

所以typeof運算子雖然能夠實現基本的判斷功能,但是有時候並不夠精準。

再來看一段程式碼例項:

[JavaScript] 純文字檢視 複製程式碼執行程式碼
console.log(typeof 5);
console.log(typeof "螞蟻部落");
console.log(typeof []);
console.log(typeof null);
console.log(typeof undefined);
console.log(typeof {})

程式碼執行效果截圖如下:

a:3:{s:3:\"pic\";s:43:\"portal/201809/01/104624man04ntttj01p2a1.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

上面程式碼的列印結果有的屬於預期,有的則出乎意料,下面做一下分析:

(1).前兩個列印結果符合預期。

(2).第三個列印不夠精準。

(3).null屬於是null型別資料,列印結果卻是object,這可以認為是ES設計時的一個小失誤。

(4).後兩個列印結果符合預期。

總結:typeof運算子對於值型別資料(除去null)是準確的,無法準確判斷陣列。

關於值型別可以參閱JavaScript值型別和引用型別一章節。

想要準確判斷資料型別,可以參閱JavaScript獲取物件資料型別一章節。

相關文章