如何区分 typeof 数组与普通对象,准确判断数据类型?

2026-05-07 18:460阅读0评论SEO教程
  • 内容介绍
  • 相关推荐

本文共计668个文字,预计阅读时间需要3分钟。

如何区分 typeof 数组与普通对象,准确判断数据类型?

`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 数组与普通对象,准确判断数据类型?

`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 安全,返回布尔值,无副作用。
阅读全文