news 2026/5/3 2:22:46

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/5/1 9:35:37

CSL编辑器终极配置指南:5分钟快速上手学术引用样式编辑

CSL编辑器终极配置指南:5分钟快速上手学术引用样式编辑 【免费下载链接】csl-editor 项目地址: https://gitcode.com/gh_mirrors/csl/csl-editor 想要轻松管理学术论文中的引用格式吗?CSL编辑器正是您需要的工具。本指南将带您从零开始&#xff…

作者头像 李华
网站建设 2026/5/1 7:48:28

novelWriter小说创作工具:从零开始的完整写作指南

novelWriter小说创作工具:从零开始的完整写作指南 【免费下载链接】novelWriter novelWriter is an open source plain text editor designed for writing novels. It supports a minimal markdown-like syntax for formatting text. It is written with Python 3 (…

作者头像 李华
网站建设 2026/5/2 11:21:33

网易云音乐下载器:打造完美个人音乐库的智能解决方案

网易云音乐下载器:打造完美个人音乐库的智能解决方案 【免费下载链接】netease-cloud-music-dl Netease cloud music song downloader, with full ID3 metadata, eg: front cover image, artist name, album name, song title and so on. 项目地址: https://gitco…

作者头像 李华
网站建设 2026/5/2 3:39:12

Materials Project API 完全指南:3步掌握材料数据查询终极方案

在材料科学研究中,获取高质量的计算机材料数据往往是最耗时耗力的环节。Materials Project API 的出现彻底改变了这一现状,为研究人员提供了一个强大而便捷的数据访问平台。这个开源项目专门为材料数据查询而生,让您能够快速获取海量材料信息…

作者头像 李华
网站建设 2026/4/30 16:01:29

如何用GPT-SoVITS为虚拟主播定制专属声音?实战演示

如何用GPT-SoVITS为虚拟主播定制专属声音?实战演示 在今天的虚拟内容生态中,一个声音就能决定一位虚拟主播(VTuber)的辨识度。粉丝们记住的不只是角色形象,更是那句“大家好呀~”的独特语调和情感温度。然…

作者头像 李华