typeof检测数据类型
-
所有的数据类型值 , 在计算机底层都按照 “64位” 的二进制值进行存储的 , typeof是按照二进制值进行检测类型的
-
二进制的前三位是零 , 认为是对象 , 然后再去看有没有实现call方法 , 如果实现了 , 就返回
function
, 如果没有实现 , 则返回object
-
null是64个零 , 所以虽然null不是对象 , 但是
typeof null
返回的是object -
检测未被声明的变量 值是
undefined
- 000 对象
- 1 整数
- 010 浮点数
- 100 字符串
- 110 布尔
- 000000 … null
- -2^30 undefined
场景1 : 判断当前值是不是一个对象
if (
val !== null
&& (typeof val === "object" || typeof val === "function")
) {
当前值是一个变量
}
场景2 : 支持更多的模块导入方案
(function () {
let utils = {
// 方法
};
// 如果发现有window 就把utils挂载到window下
if (typeof window !== "undefined") window.utils;
// 如果发现有global 就把utils挂载到global下
if (typeof modules === "object" && typeof module.exports === "object")
module.exports = utils;
})();