如何区分 typeof 数组与普通对象,准确判断数据类型?
- 内容介绍
- 相关推荐
本文共计668个文字,预计阅读时间需要3分钟。
`typeof` 对数组和普通对象都返回 `object`,这不是 bug,而是 JavaScript 语言设计的底层事实:
为什么 typeof 不能用于识别数组
因为 typeof 只能识别基本类型("string"、"number"、"boolean"、"undefined"、"symbol"、"bigint"、"function")和统一的 "object"(含 null、数组、正则、日期等)。它不检查构造方式或内部结构。
typeof [] === "object"typeof {} === "object"-
typeof null === "object"(历史遗留错误,但已成标准)
推荐的精准识别方式
优先使用语义明确、跨环境稳定、不可伪造的方法:
- Array.isArray(value) —— 最佳实践。ES5+ 原生方法,不依赖原型链,iframe 安全,返回布尔值,无副作用。
本文共计668个文字,预计阅读时间需要3分钟。
`typeof` 对数组和普通对象都返回 `object`,这不是 bug,而是 JavaScript 语言设计的底层事实:
为什么 typeof 不能用于识别数组
因为 typeof 只能识别基本类型("string"、"number"、"boolean"、"undefined"、"symbol"、"bigint"、"function")和统一的 "object"(含 null、数组、正则、日期等)。它不检查构造方式或内部结构。
typeof [] === "object"typeof {} === "object"-
typeof null === "object"(历史遗留错误,但已成标准)
推荐的精准识别方式
优先使用语义明确、跨环境稳定、不可伪造的方法:
- Array.isArray(value) —— 最佳实践。ES5+ 原生方法,不依赖原型链,iframe 安全,返回布尔值,无副作用。

