尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

JavaScript 有哪些数据类型?它们在内存里是怎么存的?

JavaScript 有哪些数据类型?它们在内存里是怎么存的?
📅 发布时间:2026/6/20 2:29:37

JavaScript 的数据类型

JavaScript 是动态类型语言,变量类型由值决定。根据 ECMAScript 规范,JavaScript 有8 种数据类型(ES2020 后 BigInt 加入):

1. 基本数据类型(Primitive Types,共 7 种)

这些类型的值直接存储在栈(Stack)内存中,按值传递,占用固定大小。

  • Undefined:表示变量已声明但未赋值。只有一个值:undefined。
  • Null:表示“空对象指针”。只有一个值:null。
  • Boolean:布尔值。只有两个值:true和false。
  • Number:数字类型(包括整数和浮点数)。在 JS 中所有数字统一用IEEE 754 标准的 64 位双精度浮点数表示(即使是整数)。
  • String:字符串。不可变,长度可变。
  • Symbol(ES6 引入):唯一且不可变的标识符,用于对象属性键避免冲突。
  • BigInt(ES2020 引入):任意精度整数,用于表示超过Number.MAX_SAFE_INTEGER(2⁵³-1)的整数。字面量后加n,如123n。
2. 引用数据类型(Reference Type,1 种)
  • Object:对象(包括普通对象、数组、函数、正则、Date 等)。值存储在堆(Heap)内存中,栈中只保存指向堆的引用地址,按引用传递。

它们在内存中的存储方式

JavaScript 引擎(如 V8、SpiderMonkey)使用栈内存和堆内存来管理数据:

数据类型存储位置存储方式说明传递方式示例变量赋值行为
Undefined栈固定值,直接存值按值传递复制后独立
Null栈固定值(内部实现为特殊指针 0x00)按值传递复制后独立
Boolean栈固定值(true/false)按值传递复制后独立
Number栈64 位双精度浮点数(8 字节)按值传递复制后独立
String栈 + 堆小字符串可能优化存栈(V8 String Interning),长字符串指针指向堆中不可变对象按值传递复制后独立(字符串内容不可变)
Symbol栈 + 堆值唯一,内部在堆中维护全局 Symbol 注册表,变量存引用按值传递复制后独立(每个 Symbol 值唯一)
BigInt栈 + 堆小 BigInt 可能优化,大整数在堆中动态分配内存,栈存指针按值传递复制后独立
Object堆对象本体存堆中,变量在栈中存指向堆的引用地址按引用传递复制变量后指向同一对象,修改会相互影响
关键点说明:
  1. 基本类型:直接存值,赋值时复制一份新值,互不影响。

    leta=10;letb=a;b=20;console.log(a);// 10(不变)
  2. 引用类型:变量存的是堆地址,赋值时复制地址,指向同一对象。

    letobj1={name:'Alice'};letobj2=obj1;obj2.name='Bob';console.log(obj1.name);// 'Bob'(被修改)
  3. 字符串的特殊处理:

    • 字符串是不可变的(immutable)。
    • V8 等引擎会使用字符串池(String Pool)或内联存储优化短字符串,避免频繁分配堆内存。
  4. 类型检测:

    • typeof:检测基本类型(typeof null异常返回"object"是历史遗留 bug)。
    • instanceof/Object.prototype.toString.call():更准确区分对象子类型。

总结表格

类型typeof 返回值存储位置是否可变传递方式
Undefined“undefined”栈-按值
Null“object”(bug)栈-按值
Boolean“boolean”栈不可变按值
Number“number”栈不可变按值
String“string”栈/堆不可变按值
Symbol“symbol”栈/堆不可变按值
BigInt“bigint”栈/堆不可变按值
Object“object” / “function”堆可变按引用

如果需要更深入探讨某个类型(如 BigInt 的底层实现或 V8 引擎的具体优化),欢迎继续提问!

相关新闻

  • 缓存击穿问题解决
  • 精选300道Linux面试题及答案详解,看完面试不慌了
  • YOLOv9轻量化版本发布!适配消费级GPU也能跑

最新新闻

  • 2026襄阳2026正规漏水检测维修公司精选口碑榜TOP5权威推荐-精准定位检测漏水点-专业防水补漏堵漏维修、卫生间/厨房/屋顶/天沟/地下室/阳台防水漏水检测维修 - 安佳防水
  • 5步掌握FitGirl游戏启动器:高效管理压缩游戏的终极工具
  • 2026年西安评价高的玻璃门生产厂家哪家强 - 品牌鉴赏官2026
  • 江门报名 CPPM 注册采购经理哪家靠谱?机构选择避坑指南 - 众智商学院课程中心
  • 如何在OBS直播中添加实时语音识别字幕:免费开源插件终极指南
  • 如何快速掌握跨设备控制:终极多平台键鼠共享方案

日新闻

  • 信任的进化:技术实现详解——如何用JavaScript构建博弈论模拟器
  • Terrakube自定义工作流:如何集成OPA、Infracost等工具扩展IaC能力
  • grunt-concurrent快速入门:5分钟学会并行运行Grunt任务

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号