一、typeof 的基本使用
先來個最簡單的例子:
console.log(typeof 42);
console.log(typeof '我');
console.log(typeof true);
看起來很簡單對吧?但如果你以為typeof
就這么點能耐,那可就太小看它了!
二、typeof 的"奇葩"表現(xiàn)
這里有幾個容易踩坑的例子:
console.log(typeof null);
console.log(typeof []);
console.log(typeof function(){});
看到沒?null
居然返回"object"
,這可是JavaScript著名的歷史遺留問題!當年我在項目里就被這個坑過,debug了半天才發(fā)現(xiàn)是類型判斷出了問題。
三、typeof 的工作原理
其實typeof
判斷類型的原理很簡單:
- 對于原始類型(除null外),直接返回對應類型字符串
- 對于函數(shù),返回
"function"
- 對于其他對象(包括數(shù)組、日期等),統(tǒng)一返回
"object"
- 對于
null
,這是個特例,因為歷史原因返回"object"
四、實戰(zhàn)中的小技巧
在實際開發(fā)中,我經常用這樣的組合判斷:
function checkType(value) {
if (value === null) return 'null';
return typeof value === 'object'
? Object.prototype.toString.call(value).slice(8, -1).toLowerCase()
: typeof value;
}
console.log(checkType([]));
console.log(checkType(new Date()));
五、為什么要有typeof?
想象一下沒有typeof
的世界:
if (value.constructor === String) {...}
if (value instanceof Array) {...}
typeof
提供了一種快速判斷基本類型的方法,雖然不完美,但在大多數(shù)情況下已經夠用了。
六、新型替代方案
現(xiàn)在我們有更多選擇:
console.log(Array.isArray([]));
console.log(typeof 我 === 'undefined');
七、總結
typeof
是JS內置的類型判斷操作符- 對原始類型判斷準確(除null外)
- 對引用類型大部分返回
"object"
- 函數(shù)會返回
"function"
- 實際開發(fā)中可能需要組合其他判斷方法
?轉自https://juejin.cn/post/7511927859772407827
該文章在 2025/6/5 14:44:16 編輯過