首先说明一下Javascript的堆栈概念

堆&栈

两者都是存放临时数据的地方。
栈是先进后出的,就像一个桶,后进去的先出来,它下面本来有的东西要等其他出来之后才能出来。
堆是在程序运行时,而不是在程序编译时,申请某个大小的内存空间。即动态分配内存,对其访问和对一般内存的访问没有区别。对于堆,我们可以随心所欲的进行增加变量和删除变量,不用遵循次序。
栈区(stack) 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。 
堆区(heap) 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。 
堆(数据结构):堆可以被看成是一棵树,如:堆排序; 
栈(数据结构):一种先进后出的数据结构。

数据类型访问&&复制

基本数据类型:基本数据类型值指保存在栈内存中的简单数据段。访问方式是按值访问。
var a = 1;
操作的是变量实际保存的值。
a = 2 ;
基本类型变量的复制:从一个变量向一个变量复制时,会在栈中创建一个新值,然后把值复制到为新变量分配的位置上。
var b = a;
b = 2 ;
引用数据类型:引用数据类型值指保存在堆内存中的对象。也就是,变量中保存的实际上的只是一个指针,这个指针指向内存中的另一个位置,该位置保存着对象。访问方式是按引用访问。
var a = new Object ();
当操作时,需要先从栈中读取内存地址,然后再延指针找到保存在堆内存中的值再操作。
a. name = 'xz' ;
引用类型变量的复制:复制的是存储在栈中的指针,将指针复制到栈中未新变量分配的空间中,而这个指针副本和原指针指向存储在堆中的同一个对象;复制操作结束后,两个变量实际上将引用同一个对象。因此,在使用时,改变其中的一个变量的值,将影响另一个变量。
var b = a;
b.sex = 'boy' ;
漏画了,差一条指针。b的引用指针也指向 object{sex:'boy'}
b.sex; // 'boy' a.name; // 'boy'

javascript的堆栈原理相关推荐

  1. JavaScript异步编程原理

    众所周知,JavaScript 的执行环境是单线程的,所谓的单线程就是一次只能完成一个任务,其任务的调度方式就是排队,这就和火车站洗手间门口的等待一样,前面的那个人没有搞定,你就只能站在后面排队等着. ...

  2. JavaScript引擎工作原理解析

    JavaScript引擎是什么 想知道JavaScript引擎是什么,首先要知道JavaScript(简称js)是什么,相信对于屏幕前的你来说,js是干什么的已经不用再多说,但还是有必要介绍下Java ...

  3. JavaScript 设计模式核⼼原理与应⽤实践 之 开篇:前端工程师的成长论

    JavaScript 设计模式核⼼原理与应⽤实践 之 开篇:前端工程师的成长论 能够决定一个前端工程师的本质的,不是那些瞬息万变的技术点,而是那些不变的东西. 所谓"不变的东西", ...

  4. JavaScript 设计模式核⼼原理与应⽤实践 之 创建型:工厂模式·简单工厂——区分“变与不变”

    JavaScript 设计模式核⼼原理与应⽤实践 之 创建型:工厂模式·简单工厂--区分"变与不变" 先来说说构造器 在介绍工厂模式之前,为了辅助大家的理解,我想先在这儿给大家介绍 ...

  5. JavaScript 设计模式核⼼原理与应⽤实践 之 创建型:工厂模式·抽象工厂——理解“开放封闭”

    JavaScript 设计模式核⼼原理与应⽤实践 之 创建型:工厂模式·抽象工厂--理解"开放封闭" 一个不简单的简单工厂引发的命案 在实际的业务中,我们往往面对的复杂度并非数个类 ...

  6. JavaScript 设计模式核⼼原理与应⽤实践之单例模式——Vuex的数据管理哲学

    JavaScript 设计模式核⼼原理与应⽤实践之单例模式--Vuex的数据管理哲学 保证一个类仅有一个实例,并提供一个访问它的全局访问点,这样的模式就叫做单例模式. 单例模式的实现思路 思考这样一个 ...

  7. JavaScript 设计模式核⼼原理与应⽤实践 之 结构型设计模式

    JavaScript 设计模式核⼼原理与应⽤实践 之 结构型设计模式 结构型:装饰器模式--对象装上它,就像开了挂 装饰器模式,又名装饰者模式.它的定义是"在不改变原对象的基础上,通过对其进 ...

  8. JavaScript的工作原理

    在学习Web前端的时候,有很多重要的知识点需要我们深刻理解并掌握实际运用场景.例如,JavaScript是Web前端人员必须要掌握的知识点之一,下面,为大家全面介绍JavaScript的工作原理,希望 ...

  9. JavaScript高级 浏览器的渲染原理与JavaScript代码执行原理

    浏览器的渲染原理 1. 网页的解析过程 2. 浏览器内核 1. V8引擎 3. 浏览器渲染过程 1. HTML解析 2. 生成CSS规则 3. 构建Render Tree 4. 布局(layout) ...

最新文章

  1. python使用 pdb 进行调试--- python -m pdb xxx.py 即可 和gdb使用一样
  2. ckeditor4 php,CKEditor 4自定义下拉列表
  3. MySql 自适应哈希索引
  4. Java_斐波那契数列_兔子生兔子算法
  5. hadoop环境搭建遇到的问题:-bash: jps: command not found
  6. iOS 快速实现分页界面的搭建
  7. python安装api_Python API文档
  8. swift 点击imageView全屏预览(UIview中弹出提示框)
  9. 台湾半导体封测商南茂股东大会通过紫光24亿元入股案
  10. Java方法重载注意事项
  11. linux拿虚拟机充当路由,Linux通过虚拟机模拟路由器实现主机跨路由通信
  12. 1.1初识sakura语法
  13. 一文读懂华为智能网联汽车产业链布局
  14. 关于农历闰月年份的口诀
  15. Error:(292, 40) java: -source 1.5 中不支持 diamond 运算符 (请使用 -source 7 或更高版本以启用 diamond 运算符) ........
  16. 分类问题中类别不平衡问题的有效解决方法
  17. 人工智能ai换脸技术_人工智能技术如何帮助企业改善营销
  18. JDK版本和项目所用版本不匹配的问题
  19. 家用计算机的发展历史,计算机发展简史
  20. Spring IOC和Bean生命周期以及源码分析

热门文章

  1. 2019区块链的19个预测
  2. 超级详细的mysql安装和配置教程
  3. 对计算机专业专家的访谈,职教名家引领!育才职教中心邀请北师大教授主持计算机网络技术专业群访谈会...
  4. SVD奇异值分解(Singular Value Decomposition)
  5. 动物园假说:人类是宇宙文明的观光品吗?
  6. 获取时间戳的几种方法
  7. 吉利纯电动品牌几何A:极简设计、智能驾驶背后暗含大野心...
  8. Java实现验证码验证功能
  9. 新手必知的SEO快速排名可用的方法
  10. CPU接触不良故障排除