所有的数据类型值,在计算机底层都是安装64位的二进制进行存储的
Snipaste_2022-04-16_21-23-52.png
- typeof是按照二进制值进行检测类型的
- 二进制前三位是000,认为是对象,如果实现了call方法,则返回’function‘,否则返回’object‘
- null是64个0,所以typeof null -> 'object' 可以认为是个bug
- 检测未声明的变量,值是’undefined‘
console.log(a); // RHS查询,未找到报错 Uncaught ReferenceError: a is not defined
console.log(typeof a); // undefined
typeof 使用场景
- 场景1
判断是否是对象
const isObject = (obj) => {
const type = typeof obj
return obj !== null && (type === 'object' || type === 'function')
}
- 场景2
支持更多的模块导入方案
(function () {
let utils = {}
// 判断浏览器环境
if (typeof window !== 'undefined') {
window.utils = utils
}
// 判断nodejs环境
if (typeof module === 'object' && typeof module.exports === 'object') {
module.exports = utils
}
})()