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

js中哪些数据在栈上,哪些数据在堆上?

在 JavaScript 中,数据的存储位置(堆或栈)取决于其类型。

1,栈(Stack)存储的数据

栈用于存储原始类型(Primitive Types)的值,这些值大小固定且直接存储在栈中,访问速度快。包括:

  • Number(数字):如 423.14
  • String(字符串):如 "张三"
  • Boolean(布尔值):如 truefalse
  • Undefined:如 undefined
  • Null:如 null
  • Symbol(ES6+):如 Symbol('id')

特点:按值访问,直接操作存储的值,赋值时创建副本,互不影响。

let a = 10;
let b = a; // b 是 a 的副本
a = 20;
console.log(b); // 仍为 10

2,堆(Heap)存储的数据

堆用于存储引用类型(Reference Types)的值,这些值大小不固定,存储在堆中,栈中仅保存指向堆的地址(引用)。包括:

  • Object(对象):如 { name: "李四" }
  • Array(数组):如 [1, 2, 3]
  • Function(函数):如 function() {}
  • DateRegExpMapSet 等内置对象。

特点:按引用访问,操作的是堆中的对象引用,赋值时共享同一对象,修改时会互相影响。

    let obj1 = { name: "张三" };let obj2 = obj1; // obj2 和 obj1 指向同一个堆对象obj1.name = "李四";console.log(obj2.name); // 输出 "李四"

3,特殊情况与注意事项

  1. 字符串的存储
    • 短字符串(如常量)可能被优化存储在栈中(引擎实现依赖)。
    • 长字符串或动态生成的字符串通常存储在堆中。
  2. 闭包变量
    • 闭包中的变量可能被提升到堆中(如 V8 引擎的优化行为),以避免被栈销毁。
  3. 引擎优化
    • 现代 JS 引擎(如 V8、SpiderMonkey)会动态优化存储方式,例如对小对象进行内联缓存(Inline Caching)或隐藏类(Hidden Class)优化。

4,总结对比表

数据类型存储位置访问方式赋值行为
原始类型(Number等)按值访问创建副本,互不影响
引用类型(Object等)按引用访问共享同一对象,修改互相影响

5,为什么要区分栈和堆?

  • 性能:栈访问快,但空间有限;堆空间大,但访问稍慢。
  • 内存管理:栈自动释放(函数调用结束时),堆需依赖垃圾回收(GC)。
  • 理解引用行为:避免因共享引用导致的意外修改。
http://www.dtcms.com/a/602240.html

相关文章:

  • 上海云盾sdk游戏盾对比传统高防ip的优势
  • 系统配置重复项处理:经验未必可靠
  • 网站开发与应用 大作业作业辽宁省建设培训中心网站
  • 服务器与普通个人电脑的主要区别是什么?
  • 亚购物车功能网站怎么做的百度软件应用市场
  • 二项分布(Binomial Distribution)详解:从理论到实践
  • 深圳有没有什么网站重庆顶呱呱网站建设
  • 国外网站 设计成都注册公司核名网站
  • 衡阳网站建设开发价格谷歌推广新手教程
  • 【2025最新】05 Spring Security 构建 RESTful Web 注册服务
  • 基于java的无人驾驶物流配送与管理系统设计
  • 基于安卓的在线教育系统的设计与实现【附源码】
  • 河南网站seo地址深圳带停机坪的别墅
  • 专业做家具的网站swf上传wordpress
  • 硬件学习笔记--90 同步通信、异步通信、串行通信、并行通信介绍
  • linux练习1112-2
  • 力扣59 螺旋矩阵II java实现
  • 做网站内容需要自己填的建筑网校排行榜
  • 做推送好用的网站qq音乐怎么做mp3下载网站
  • 做家教有什么好的资料网站阜蒙县自治区建设学校网站
  • 无人机遥控接收机技术要点与难点
  • .NET高性能内存管理
  • [Powershell入门教程]第4天:模块、脚本编写、错误处理与 .NET 集成
  • 哈尔滨模板建站软件asp flash网站模板
  • 江阴公司网站建设河北网络营销推广seo
  • C#9、默认访问修饰符
  • [AI tradingOS] 前端.ts | config.ts转发到后端
  • 凡客网上购物西安百度seo代理
  • MATLAB实现图像PCA降噪
  • 辽阳专业建设网站公司服务公司理念