javascript数据类型分原始类型(7种)和引用类型;原始类型包括number、string、boolean、undefined、null、symbol、bigint,直接存值于栈内存,不可变;typeof可识别其中6种,但typeof null返回"object"属历史bug,需单独用===判断;undefined推荐用typeof x === "undefined"检测更安全;引用类型需组合方法:array用array.isarray(),内置类型用object.prototype.tostring.call(),自定义类用instanceof(注意跨iframe失效),普通对象需排除数组;通用检测函数gettype()封装tostring.call,返回小写类型名,健壮且跨环境;实际开发中应按场景选策略:参数校验先typeof再细分,json序列化前排除undefined/function/symbol,判空需明确需求而非仅falsy,nan须用number.isnan()检测。

JavaScript 数据类型分两大类:原始类型(7 种)和引用类型(以 Object 为核心的一系列构造类型)。检测方法不能只靠一种,需组合使用才能准确识别。
原始类型有哪些?怎么判断?
原始类型包括:Number、String、Boolean、Undefined、Null、Symbol、BigInt。它们直接存值,不可变,位于栈内存。
- typeof 对这 7 类基本都有效,返回小写字符串(如 "string"、"number")
- 唯一例外是 typeof null === "object" —— 这是历史 bug,必须单独处理
- 判断 undefined 推荐用 typeof x === "undefined",比
x === undefined更安全(避免变量未声明报错) - 判断 null 只能用 x === null,因为 typeof、instanceof、toString 都不推荐用于此单一目的
引用类型怎么区分?光用 typeof 不行
typeof 对所有引用类型几乎都返回 "object"(除了函数返回 "function"),所以必须换方法:
Java项目代码review工具。分析Git变更+完整调用链路上下文,推断业务需求,进行多维度评分和分类汇总,生成完整PRD文档。包含细粒度Java代码审查清单(Null安全、异常处理、Streams、并发、equals/hashCode、资源管理、API设计、性能、MyBatis/ORM、事务边界、SQL/DD...
-
Array:优先用
Array.isArray(x)(最可靠,ES5+ 支持) -
Date / RegExp / Map / Set 等内置类型:用
Object.prototype.toString.call(x),它返回形如"[object Date]"的标准字符串 -
自定义构造函数实例:用
x instanceof MyConstructor,但注意跨 iframe 失效(原型链断裂) -
普通对象(纯 object):可结合
toString.call(x) === "[object Object]"和!Array.isArray(x)排除数组
一个通用检测函数怎么写?
把 toString.call 封装成可读性强的工具函数,兼顾兼容性和语义清晰:
function getType(value) {
const str = Object.prototype.toString.call(value);
return str.slice(8, -1).toLowerCase(); // 如返回 "array"、"null"、"date"
}
- 这个函数能正确区分
null、undefined、array、date、promise等所有标准类型 - 返回值是小写字符串,便于条件判断(如
getType(x) === 'array') - 不依赖构造函数名,不受 window 污染或跨环境影响,比 constructor 更健壮
实际开发中要注意什么?
别迷信单一方法,不同场景选不同策略:
- 参数校验:优先用
typeof快速筛基本类型,再用Array.isArray或getType细分引用类型 - JSON 序列化前:要排除
undefined、function、symbol,因为 JSON 不支持它们 - 判断是否“空值”:不要只看 falsy(如 0、""),应明确需求——是检查
null/undefined?还是检查数组长度为 0?还是对象无自有属性? - 注意
NaN:它 typeof 是 "number",但NaN !== NaN,检测用Number.isNaN(x)最准
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










