目录
- 前言
- 一、JavaScript 的两大类型体系
- 二、js 基本类型大全(Primitive Types)
- 三、js 引用类型大全(Reference Types)
- 1、Object 基础类型
- 2、结构化数据容器
- 3、内置封装对象(Wrapper Objects)
- 4、集合与结构化数据
- 5、异步与迭代系统
- 6、国际化与其他对象
- 四、完整总结对比表
前言
历史视角可戳这里:
js 数据类型
js 引用类型
js ES6 引用类型的新特性
js 判断数据类型(基本数据类型、引用数据类型)and 强制转换数据类型
一、JavaScript 的两大类型体系
JavaScript 的所有值分为两类:
| 类型类别 | 存储方式 | 是否可变 | 举例 |
|---|
| 基本类型(Primitive Types) | 存在栈内存中 | 不可变(immutable) | 1, 'a', true, undefined |
| 引用类型(Reference Types) | 存在堆内存中 | 可变(mutable) | {}, [], Map, Iterator |
二、js 基本类型大全(Primitive Types)
ES16 时,JavaScript 一共有 8 种基本类型:
| 基本类型 | 说明 | 示例 |
|---|
| Number | 双精度浮点数 | 42, 3.14, NaN |
| BigInt | 任意精度整数 | 123n, 9007199254740993n |
| String | 字符串 | 'Hello', "world" |
| Boolean | 布尔值 | true, false |
| Symbol | 唯一标识符 | Symbol('id') |
| Undefined | 未定义 | undefined |
| Null | 空值 | null |
(新增) Primitive wrapper 不算基本类型 → Object、Function、Array 都是引用类型 | | |
⚠️ 注意:
typeof null === “object” 是历史遗留 bug,null 实际上是基本类型。
三、js 引用类型大全(Reference Types)
引用类型全部都是通过 new 或内建对象创建的,是对象(Object)或其子类型。
在 ES16(2025)中,引用类型大体分为以下几类,请一一阅览。
1、Object 基础类型
| 名称 | 说明 |
|---|
Object | 所有对象的基类 |
Function | 所有函数的基类 |
Array | 数组对象 |
Date | 日期对象 |
RegExp | 正则对象 |
Error | 错误对象及其子类(TypeError, ReferenceError 等) |
2、结构化数据容器
| 名称 | 说明 |
|---|
Map | 键值映射表 |
Set | 唯一值集合 |
WeakMap | 弱引用键值映射 |
WeakSet | 弱引用集合 |
WeakRef | 弱引用包装器(ES2021) |
FinalizationRegistry | 注册清理回调 |
3、内置封装对象(Wrapper Objects)
这些是对基本类型的对象包装版本:
| 基本类型 | 对应的包装对象 |
|---|
Number | Number 对象 |
String | String 对象 |
Boolean | Boolean 对象 |
BigInt | BigInt 对象 |
Symbol | Symbol 对象 |
JS 会在必要时自动“装箱”这些类型,比如:
'abc'.toUpperCase();
4、集合与结构化数据
| 名称 | 说明 |
|---|
ArrayBuffer | 原始二进制缓冲区 |
SharedArrayBuffer | 多线程共享缓冲区 |
DataView | 对二进制数据的结构化访问 |
TypedArray 系列 | 如 Uint8Array, Float32Array 等 |
5、异步与迭代系统
| 名称 | 说明 | ES版本 |
|---|
Promise | 异步操作封装 | ES2015 |
AsyncFunction | 异步函数类型(内部构造) | ES2017 |
GeneratorFunction | 生成器函数类型 | ES2015 |
Generator | 生成器实例 | ES2015 |
AsyncGeneratorFunction | 异步生成器函数 | ES2018 |
AsyncGenerator | 异步生成器实例 | ES2018 |
🆕 Iterator | 标准化的迭代器原型及辅助类 | ES2025 |
🆕 AsyncIterator | 异步版本的迭代器 | ES2025 |
6、国际化与其他对象
| 名称 | 说明 |
|---|
Intl 系列 | 国际化(Intl.DateTimeFormat, Intl.NumberFormat 等) |
JSON | JSON 全局对象 |
Reflect | 元编程辅助 |
Proxy | 拦截对象操作 |
Atomics | 多线程原子操作(与 SharedArrayBuffer 配合) |
Iterator, AsyncIterator | 分别是:提供标准迭代器的全局原型与方法 和 异步迭代器的全局原型与方法(ES16 新增全局对象) |
四、完整总结对比表
| 分类 | 类型名 | 类型说明 | 存储位置 |
|---|
| 基本类型 | Number, BigInt, String, Boolean, Symbol, Undefined, Null | 不可变值 | 栈 |
| 引用类型 | Object, Array, Function, Date, RegExp, Map, Set, WeakMap, WeakSet, Promise, Generator, Iterator, AsyncIterator, Proxy, Reflect, Error, Intl, JSON, Atomics, ArrayBuffer, DataView, TypedArray 系列, SharedArrayBuffer | 可变对象 | 堆 |