news 2026/8/11 7:36:14

JS变量存储:栈与堆的奥秘

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
JS变量存储:栈与堆的奥秘

在 JavaScript 中,变量的存储方式取决于其类型:

一、基础类型(Primitive Types)

包括:undefined,null,boolean,number,string,symbol,bigint
存储特点:

  1. 直接存储在**栈内存(Stack)**中
  2. 变量保存的是实际值
  3. 赋值操作会创建值的副本
leta=10;letb=a;// b 获得 a 的副本a=20;// 修改 a 不影响 bconsole.log(b);// 输出 10(值不变)

二、引用类型(Reference Types)

包括:Object,Array,Function,Date
存储特点:

  1. 实际数据存储在**堆内存(Heap)**中
  2. 变量保存的是指向堆内存地址的指针
  3. 赋值操作仅复制指针(浅拷贝)
letobj1={name:"Alice"};letobj2=obj1;// obj2 复制 obj1 的指针obj1.name="Bob";// 修改堆内存中的数据console.log(obj2.name);// 输出 "Bob"(指针指向同一数据)

三、内存机制对比

特性基础类型引用类型
存储位置栈内存堆内存
赋值行为复制值本身复制指针(内存地址)
比较操作值相等即可(5 === 5需指针相同({} !== {}
内存管理随栈帧销毁自动回收需通过垃圾回收机制(GC)

四、关键差异说明

  1. 函数参数传递

    functionchangePrimitive(val){val=100;// 不影响外部变量(值传递)}functionchangeReference(obj){obj.prop="changed";// 修改堆内存(指针传递)}
  2. 深拷贝解决方案

    // 引用类型需显式深拷贝才能完全独立constoriginal={a:1,b:{c:2}};constdeepCopy=JSON.parse(JSON.stringify(original));

理解这两种存储机制对避免 JavaScript 的常见陷阱(如意外修改共享对象)至关重要。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/3 22:57:18

语音克隆避坑指南:使用GPT-SoVITS时常见的8个错误及解决方案

语音克隆避坑指南:使用GPT-SoVITS时常见的8个错误及解决方案 在虚拟主播一夜爆红、AI配音批量生成有声书的今天,你是否也尝试过用一段录音“复制”自己的声音?不少开发者满怀期待地打开 GPT-SoVITS 的 GitHub 页面,上传几分钟音频…

作者头像 李华
网站建设 2026/7/26 9:14:18

快速上手GPT-SoVITS:三步教你生成第一个AI语音片段

快速上手GPT-SoVITS:三步教你生成第一个AI语音片段 在内容创作、虚拟角色配音甚至智能客服日益个性化的今天,你是否想过,只需一分钟录音,就能让AI“学会”你的声音?这不再是科幻电影的桥段——借助开源项目 GPT-SoVITS…

作者头像 李华
网站建设 2026/7/26 14:43:19

智能排版革命:如何让论文写作效率提升300%

智能排版革命:如何让论文写作效率提升300% 【免费下载链接】SJTUThesis 上海交通大学 LaTeX 论文模板 | Shanghai Jiao Tong University LaTeX Thesis Template 项目地址: https://gitcode.com/gh_mirrors/sj/SJTUThesis 还在为论文格式调整而熬夜吗&#xf…

作者头像 李华
网站建设 2026/8/3 7:52:15

rpatool完全指南:轻松管理RenPy游戏资源档案

rpatool完全指南:轻松管理RenPy游戏资源档案 【免费下载链接】rpatool A tool to work with RenPy archives. 项目地址: https://gitcode.com/gh_mirrors/rp/rpatool rpatool是一款专为RenPy游戏开发者设计的强大工具,能够高效处理RPA档案文件&am…

作者头像 李华
网站建设 2026/8/9 18:21:41

Data-Juicer终极指南:快速掌握AI数据处理的秘密武器

Data-Juicer终极指南:快速掌握AI数据处理的秘密武器 【免费下载链接】data-juicer A one-stop data processing system to make data higher-quality, juicier, and more digestible for LLMs! 🍎 🍋 🌽 ➡️ ➡️🍸 &…

作者头像 李华
网站建设 2026/8/5 19:38:11

Zotero文献格式革命:Linter插件让文献管理效率飙升300%

Zotero文献格式革命:Linter插件让文献管理效率飙升300% 【免费下载链接】zotero-format-metadata Linter for Zotero. An addon for Zotero to format item metadata. Shortcut to set title rich text; set journal abbreviations, university places, and item la…

作者头像 李华