当前位置: 首页 > news >正文

新视角看 js 的数据类型

目录

  • 前言
  • 一、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 不算基本类型ObjectFunctionArray 都是引用类型

⚠️ 注意:
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)

这些是对基本类型的对象包装版本:

基本类型对应的包装对象
NumberNumber 对象
StringString 对象
BooleanBoolean 对象
BigIntBigInt 对象
SymbolSymbol 对象

JS 会在必要时自动“装箱”这些类型,比如:

'abc'.toUpperCase(); // 实际执行 new String('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 等)
JSONJSON 全局对象
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可变对象
http://www.dtcms.com/a/601361.html

相关文章:

  • PySide6 + QML - QSerialPort01 - 扫描操作系统上有效的串口
  • 【前端面试】HTML篇
  • Next.js第四章(路由导航)
  • 从jsp打开一个html,怎么把jsp的某些参数传递给html
  • 谷歌google官方网站网站开发 书籍
  • 北京网站备案公司安徽观元建设有限公司网站
  • 若依plus请求加解密
  • PHP Filter:深入了解其功能与实现
  • Linux基础指令(简易版)
  • 农田灌区监测设备:赋能现代农业的精准感知与智能调控
  • 中山 灯饰 骏域网站建设专家百度关键词推广帝搜软件
  • 自己怎么做 优惠券网站西京一师一优课建设网站
  • CST电动车EMC仿真(二)——电机控制器MCU的EMC仿真
  • WPP Media(群邑)DOOH 解决方案 重构数字户外广告价值
  • 基于SpringBoot+Vue的美容美发在线预约系统的设计与实现【附源码】
  • 数字化转型改变了什么?从技术底层到业务本质的深度重构
  • 从 “被动抢修” 到 “主动防控”,安科瑞 mini 智能微断,重构末端配电安全新逻辑
  • 从经验到算法:智能获客系统如何重构ToB销售效率
  • Oracle 19C 数据字典 DBA_HIST_SEG_STAT 详细说明
  • tsfile.raw提示
  • JAVA中六种策略模式的实现
  • 【ZeroRange WebRTC】TLS 底层原理与工作机制(深入解析)
  • 【论文阅读16】-LLM-TSFD:一种基于大型语言模型的工业时间序列人机回路故障诊断方法
  • 联想键盘失灵处理方法
  • 网站建设scyiyouhtml5模板之家
  • 做网站网络公司泉州住房建设局网站
  • 电子绕核运动为何不辐射能量、不坠入原子核?
  • RK3588核心板/开发板RT-Linux系统实时性及硬件中断延迟测试
  • 11. 函数极限
  • 死锁的本质:形成条件、检测机制与排查策略