js中的堆栈理解

栈内存空间

栈内存空间 : 就是用栈作为数据结构在内存中所申请的空间。
栈的特点

  • 后进先出,最后添加进栈的元素最先出。
  • 访问栈底元素,必须拿掉它上面的元素。
  • 会被提前开辟

堆内存空间

堆内存空间:就是用堆作为数据结构在内存中所申请的空间。
堆的特点:

  • 最大堆:以最大数值开始的二叉树
  • 最小堆:以最小数值开始的二叉树
  • 不会提前开辟

变量类型与堆栈内存的关系

JS的基本数据类型有7种:

  • string
  • number
  • boolean
  • null
  • undefined
  • symbol
  • bigInt

基本数据类型变量保存在栈内存中,因为基本数据类型占用空间小、大小固定,通过值来访问,属于被频繁使用的数据。

引用数据类型

  • array
  • function
  • object

引用数据类型存储在堆内存中,引用数据类型占据空间大、大小不固定,如果存储在栈中,将影响程序的运行性能。

引用数据类型会在栈中存储一个指针,这个指针指向堆内存空间中该实体的起始地址。

当解释器寻找引用值时,会先检索其在栈中的地址,取得地址后,从堆中获得实体。

堆内存空间与堆内存的区别

堆内存空间:相当于一个采用二叉堆作为数据结构的容器。

堆内存:指的是一个引用类型的具体值。

堆内存存在于堆内存空间中。

基本数据类型的复制

let name = "神奇的程序员";
let alias = name;
alias = "大白";
//name、alias都是基本类型,它们的值存储在栈内存。
//它们分别有各自独立的栈空间
//因此,修改alias的值,name不受影响

引用数据类型的复制

let book = {title:"书", id: 12}
let info = book;
info.title = "故事书";
console.log(book.title); // 故事书
//info、book都是引用类型,它们的引用存在栈内存,值存在堆内存
//它们的值指向同一块堆内存,栈内存中会复制一份相同的引用

借鉴:https://juejin.cn/post/6942880039897825294

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/22870.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux 内核优化:提升性能测试效率的关键步骤

大家好,本文介绍了如何通过优化 Linux 内核配置来提高系统性能,特别是在进行性能测试时。从调整文件系统、网络参数到内核参数优化,我们将深入探讨每个关键步骤,以帮助你在性能测试中取得更好的效果。 在进行性能测试时&#xff0…

JVM面试篇(下)

垃圾收集器 简述 Java 垃圾回收机制 在 java 中,程序员是不需要显示的去释放一个对象的内存的,而是由虚拟机自行执行。在 JVM中,有一个垃圾回收线程,它是低优先级的,在正常情况下是不会执行的,只有在虚拟机空闲或者当前堆内存不足时,才会触发执行,扫面那些没有被任何引…

Python | 判断集合成员(set作为哈希表)(集合)

set的概念和特点set的基本操作,比如创建、插入、删除、查找set的常用方法 集合: 也是一种数据结构,和数学中的集合类似,它用 于存储一组不重复的元素,并且不保证元素的顺序。查找通常是集合最重要的操作。 1.可以使用…

筛斗数据:数据治理在企业发展中的关键作用

随着信息技术的飞速发展,数据已成为企业最宝贵的资产之一。在这样的背景下,数据治理作为确保数据质量、可用性、一致性和安全性的过程,其重要性日益凸显。本文将探讨数据治理与企业之间的紧密联系,以及如何通过有效的数据治理策略…

centos安装部署Mysql8详细教程

文章目录 一、下载安装1.下载2.安装 二、常见问题1.You must reset your password using ALTER USER statement before executing this statement2.IP is not allowed to connect to this mysql 结尾 提示:以下是本篇文章正文内容,下面案例可供参考 一、…

JL-8B/1111电流继电器 带板前接线附件 约瑟JOSEF

JL-8系列继电器型号: 电流继电器JL-8GB/11 电流继电器JL-8GA/21 过电流继电器JL-8GB/1 电流继电器JL-8B/521DK 电流继电器JL-8B/222DK 电流继电器JL-8B/1121 电流继电器JL-8B/12 电流继电器JL-8B/3211 电流继电器JL-8B/E2 电流继电器JL-8B/E3 过电流继电器JL-…

Python项目实战 - 简易计算器

Python项目实战 - 简易计算器 引言 在Python编程学习中,项目实战是巩固知识、提升技能的重要途径。本次我们将通过构建一个简易的计算器项目来锻炼Python的基础知识,包括变量、函数、条件语句和输入/输出操作。通过这个项目,你将能够深入理…

YOLOv8改进有效涨点专栏目录——包含backbone、head、neck和损失函数上百余种改进技巧

专栏地址:YOLOv8改进有效涨点——持续更新中 backbone——主干 YOLOv8改进 | 主干网络 | 将主干网络替换为轻量化的ShuffleNetv2【原理 完整代码】 YOLOv8改进 | 主干网络 | 增加网络结构增强小目标检测能力【独家创新——附结构图】 YOLOv8改进 | 主干网络 | 在…

大宋咨询(深圳神秘顾客)关于连锁药店神秘顾客检查的内容

药店作为社会公共卫生体系的重要组成部分,其服务质量和药品管理水平直接关系到公众的健康与安全。为了提升药店的服务质量,确保药品的合规销售,神秘顾客调查作为一种有效的评估手段,逐渐在药店行业中得到广泛应用。大宋咨询&#…

基于三元组一致性学习的单目内窥镜里程计估计

文章目录 TCL: Triplet Consistent Learning for Odometry Estimation of Monocular Endoscope摘要方法实验结果 TCL: Triplet Consistent Learning for Odometry Estimation of Monocular Endoscope 摘要 单目图像中深度和姿态的估计对于计算机辅助导航至关重要。由于很难获…

Kafka消费者api编写教程

1.基本属性配置 输入new Properties().var 回车 //创建属性Properties properties new Properties();//连接集群properties.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG,"node1:9092,node2:9092");//反序列化properties.put(ConsumerConfig.KEY_DESERIALIZER_CL…

postgresql根据某个字段去重获取整行数据

背景:在一些情况下我们需要对数据进行去重统计,group by就行,但是一些特殊情况下我们要根据某个字段去重之后获取非聚合字段的值,这个时候在mysql非严格模式下可以直接执行,但是在严格模式和postgresql里面是直接报错的…

vue中数组常用的六种循环方法、VUE中list的各种方法和运用

简单记录一下,常用的六种数组循环的方法,分别是for(),map(),forEach(),filter (),every(),some(); 一、for循环 let data [{name: 张三,age: 10}, {name: 李四,age: 20}, {name: 王五,age: 3…

k8s 对外服务之 Ingress(七层代理)

一 Ingress 简介 理论方面 1, k8s service 作用 对集群内部: 它不断跟踪pod的变化,更新endpoint中对应pod的对象,提供了ip不断变化的pod的服务发现机制 对集群外部: 对集群外部,他类似负载均衡器&am…

JAVA家政系统小程序源码,家政系统源码,支持店铺入驻接单,师傅入驻接单:专业团队自主研发的一套上门家政APP系统成品源码,支持商用

JAVA家政系统小程序源码,家政系统源码,支持店铺入驻接单,师傅入驻接单:专业团队自主研发的一套上门家政APP系统成品源码,支持商用 家政系统是一套可提供上门家政的系统,可在线预约开荒保洁、上门维修、美容…

Android 如何保证开启debug模式之后再启动

很多时候会需要debug看Android启动时候的一些数据,但很多时候会存在自己开启debug后app已经过了自己要debug的那段代码的时机了。 那么怎么样可以保证一定能让启动后不会错过自己要debug的那段代码执行的时机呢? 可以用下面这行命令,其中co…

废品回收小程序开发,助力商家拓展回收市场

随着互联网的快速发展,废品回收行业也走向了数字化发展,废品回收小程序成为了拓展市场的重要方式。在当下万亿元下的回收市场中,废品回收小程序的发展也能够发挥重要作用,提高市场回收效率,提高大众的回收意识&#xf…

前端开发入门指南:掌握网页设计的第一课

UI设计与前端开发是相辅相成,UI设计可以视觉美化产品界面,而前端开发可以通过代码实现设计稿。作为UI设计师,如果画出来的图片美观方便对前端开发者非常有益。如果设计复比较难以实现,沟通就会变得更加困难。因此,UI设…

Django路由与会话深度探索:静态、动态路由分发,以及Cookie与Session的奥秘

系列文章目录 Django入门全攻略:从零搭建你的第一个Web项目Django ORM入门指南:从概念到实践,掌握模型创建、迁移与视图操作Django ORM实战:模型字段与元选项配置,以及链式过滤与QF查询详解Django ORM深度游&#xff…

Python爬虫之保存图片到本地

Python爬虫之BeautifulSoup保存图片到本地 在网络爬虫的世界里,文字是丰富的养分,而图片则是色彩缤纷的果实。无论你是在收集艺术作品、建立产品目录,还是只是想保存那些令人惊叹的旅行照片,从网页上抓取并保存图片都是一项常见而…