javascript变量类型检测需按目标类型选用方法:基础类型用typeof最快,但null返回'object'需单独判断;数组用array.isarray()最可靠;精确识别所有类型用object.prototype.tostring.call();null和undefined应分别用===null和typeof判断。

JavaScript 变量类型检测不能只靠一个方法,得根据目标类型选对工具。基础类型用 typeof 最快,但对 null、数组、日期这些会“认错”;要精准识别所有类型,得靠 Object.prototype.toString.call() 这个通用方案。
基础类型:用 typeof 快速判断
typeof 是最轻量、最常用的方式,适合检查 string、number、boolean、undefined、function、symbol 和 bigint。
- 直接写
typeof x === 'string'就能确认是不是字符串 -
typeof null返回'object'——这是历史 bug,必须单独用x === null判断 -
typeof []、typeof new Date()、typeof /abc/全是'object',无法区分
数组:优先用 Array.isArray()
这是专门为此设计的 API,比 instanceof Array 更可靠,尤其在跨 iframe 场景下不会出错。
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
-
Array.isArray([])→true -
Array.isArray({})→false - 避免用
arr instanceof Array,它在不同 JS 执行上下文中可能失效
精确识别所有类型:toString.call()
这是目前最权威、最稳定的方案,能返回形如 [object Array]、[object Date] 的标准字符串。
-
Object.prototype.toString.call([])→'[object Array]' -
Object.prototype.toString.call(new Date())→'[object Date]' - 封装成函数可复用:
const getType = v => Object.prototype.toString.call(v).slice(8, -1).toLowerCase();
调用getType([1,2])得到'array'
null 和 undefined 的安全判断
两者语义不同,检测方式也应明确区分:
- 判
undefined:优先用typeof x === 'undefined'(兼容未声明变量) - 判
null:直接x === null(== null会同时捕获undefined,慎用) - 想同时处理空值:用
x == null或现代写法x ?? defaultValue
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










