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

Javascript中的堆内存和栈内存

了解堆栈前一定要知道js的变量类型,注意一定要区分变量类型和数据类型,虽说类型但是不能搞混了

借用JavaScript高级程序设计中的概念:

ECMAScript变量包含两种不同类型的数据:原始值和引用值。原始值就是最简单的数据(Undefined、Null、Boolean、Number、String、Symbol),引用值则是由多个值构成的对象(Object(object,array)、Function)。

在把一个值赋值给变量时,Javascript引擎必须确定这个值是原始值还是引用值。保存原始值的变量是按值访问的,因为我们操作的就是存储在变量中的实际值。

引用值是保存在内存中的对象。与其他语言不同,Javascript不允许直接访问内存位置,因此也就不能直接操作对象所在的内存空间。在操作对象时,实际上操作的是对该对象的引用而非实际的对象本身。为此,保存引用值的变量是按引用访问的。

更详细的请自行阅读javaScript高级程序设计中的第四章。

为了更方便理解下文中的原始值以字符串来举例,引用值以对象来举例

那么变量既然区分出原始值和引用值了,那么就可以说说存储了,简单点就是说字符串是存储在栈内存中的,而对象是存储在堆内存的中,那么我们访问变量的时候访问的都是栈内存,只不过在创建对象变量的时候,js在堆内存中创建的同时,在栈内存中也创建了一个指针(不好理解就直接理解成该对象在堆内存中的地址),这个指针就是指向堆内存中的对象本身。下图可以体现出以上说的

 


http://www.kler.cn/news/356400.html

相关文章:

  • mysql--数据类型
  • 前端vue项目使用Decimal.js做加减乘除求余运算
  • C++20中头文件source_location的使用
  • 大数据学习-Clickhouse
  • 数据结构——链表,哈希表
  • makefile和make
  • JavaWeb学习(3)
  • [项目详解][boost搜索引擎#1] 概述 | 去标签 | 数据清洗 | scp
  • 024 elasticsearch集群
  • 生财合伙人推荐 - 鞠海深-群控
  • 霍夫圆型硬币检测Matlab程序
  • GitHub与GitCode
  • vuefor循环动态展示图片不显示
  • ARM指令集和汇编语言的关联学习
  • 设计模式——代理模式(6)
  • 408算法题leetcode--第33天
  • 【概率论】泊松分布
  • Gorm操作数据库,有和没有WithContext的区别
  • 【设计模式】深入理解 Python 单例模式:从原理到实现
  • 第8篇:网络安全基础