news 2026/6/15 16:49:45

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/6/15 13:33:03

Web端文件创建与保存全攻略

如何实现Web端创建文件、编辑后直接保存 在Web应用中实现文件创建、编辑和直接保存功能,需要结合前端(浏览器端)和后端(服务器端)技术。核心思路是:用户在前端界面创建文件并编辑内容,然后通过…

作者头像 李华
网站建设 2026/6/15 12:41:11

大疆无人机固件管理新体验:DankDroneDownloader深度解析

大疆无人机固件管理新体验:DankDroneDownloader深度解析 【免费下载链接】DankDroneDownloader A Custom Firmware Download Tool for DJI Drones Written in C# 项目地址: https://gitcode.com/gh_mirrors/da/DankDroneDownloader 在无人机技术快速发展的今…

作者头像 李华
网站建设 2026/6/15 12:41:01

Serdes专题(6)Serdes读写实现

文章目录 1.回环程序实现 2.对端读写程序 3.调试结果 4.传送门 1.回环程序实现 这三种分别对应的部分,如下图所示的IP设置界面,其中Loopback serial data after transmit driver对应①,数据方向是用户Tx的数据在经过SERDES之后短接到Rx环回进去。与在Fiber上通过双纤短接Rx与…

作者头像 李华
网站建设 2026/6/14 3:14:41

跨平台文本编辑器notepad--的终极完整配置指南

跨平台文本编辑器notepad--的终极完整配置指南 【免费下载链接】notepad-- 一个支持windows/linux/mac的文本编辑器,目标是做中国人自己的编辑器,来自中国。 项目地址: https://gitcode.com/GitHub_Trending/no/notepad-- 还在为不同操作系统之间…

作者头像 李华
网站建设 2026/6/10 20:43:47

CEF4Delphi终极指南:从传统桌面到现代化Web的完整解决方案

在当今快速发展的技术环境中,传统桌面应用开发者面临着一个关键抉择:是坚守熟悉的开发框架,还是冒险转向全新的技术栈?CEF4Delphi项目提供了一个创新的答案——让经典与现代完美融合。 【免费下载链接】CEF4Delphi CEF4Delphi is …

作者头像 李华
网站建设 2026/6/15 14:46:13

开源社区推荐:GPT-SoVITS项目GitHub星标暴涨原因分析

开源社区推荐:GPT-SoVITS项目GitHub星标暴涨原因分析 在AI生成内容爆发的2024年,一个名字频繁出现在语音技术爱好者的讨论区——GPT-SoVITS。这款开源语音克隆工具的GitHub仓库星标数在短短三个月内从几百飙升至超过1.8万,成为继Stable Diffu…

作者头像 李华