typeof检测数据类型

所有的数据类型值,在计算机底层都是安装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. 场景1
    判断是否是对象
const isObject = (obj) => {
  const type = typeof obj
 
  return obj !== null && (type === 'object' || type === 'function')
}
  1. 场景2
    支持更多的模块导入方案
 (function () {
        let utils = {}
        // 判断浏览器环境
        if (typeof window !== 'undefined') {
          window.utils = utils
        }

        // 判断nodejs环境
        if (typeof module === 'object' && typeof module.exports === 'object') {
          module.exports = utils
        }
})()

你可能感兴趣的:(typeof检测数据类型)