所有的數(shù)據(jù)類型值,在計(jì)算機(jī)底層都是安裝64位的二進(jìn)制進(jìn)行存儲(chǔ)的
Snipaste_2022-04-16_21-23-52.png
- typeof是按照二進(jìn)制值進(jìn)行檢測(cè)類型的
- 二進(jìn)制前三位是000,認(rèn)為是對(duì)象,如果實(shí)現(xiàn)了call方法挂捅,則返回’function‘,否則返回’object‘
- null是64個(gè)0堂湖,所以typeof null -> 'object' 可以認(rèn)為是個(gè)bug
- 檢測(cè)未聲明的變量闲先,值是’undefined‘
console.log(a); // RHS查詢,未找到報(bào)錯(cuò) Uncaught ReferenceError: a is not defined
console.log(typeof a); // undefined
typeof 使用場(chǎng)景
- 場(chǎng)景1
判斷是否是對(duì)象
const isObject = (obj) => {
const type = typeof obj
return obj !== null && (type === 'object' || type === 'function')
}
- 場(chǎng)景2
支持更多的模塊導(dǎo)入方案
(function () {
let utils = {}
// 判斷瀏覽器環(huán)境
if (typeof window !== 'undefined') {
window.utils = utils
}
// 判斷nodejs環(huán)境
if (typeof module === 'object' && typeof module.exports === 'object') {
module.exports = utils
}
})()