10分钟理解JS堆、栈以及事件循环的概念
其实一开始对栈、堆的概念特别模糊,只知道如同跟内存有关,又如同事件循环也沾一点边。面试薄荷的时候,面试官正好也问到了这个问题,当时只可以大方的承认不会。痛定思痛,回去好好的研究一番。
我们将从JS的内存机制以及事件机制和大量的(例子)来理解栈、堆到底是个什么玩意。概念比较多,不使用死读,所有的心里想一遍,浏览器console看一遍就很清楚了。
对前台有兴趣或者者正在学习web前台的小伙伴,能私信小编【学习】就可免费领取2018最新的一整套系统web前台学习教程!
JS内存机制
由于JavaScript具备自动垃圾回收机制,所以对于前台开发来说,内存空间并不是一个经常被提及的概念,很容易被大家忽视。特别是很多不专业的朋友在进入到前台之后,会对内存空间的认知比较模糊。
在JS中,每一个数据都需要一个内存空间。内存空间又被分为两种,栈内存(stack)与堆内存(heap)。
栈内存一般储存基础数据类型
pre class=”brush:js;toolbar:false”> Number String Null Undefined Boolean (es6新引入了一种数据类型,Symbol)
最简单的
pre class=”brush:js;toolbar:false”>var a = 1
我们定义一个变量a,系统自动分配存储空间。我们能直接操作保存在栈内存空间的值,因而基础数据类型都是按值访问。
数据在栈内存中的存储与用方式相似于数据结构中的堆栈数据结构,遵循后进先出的准则。
堆内存一般储存引使用数据类型
堆内存的
pre class=”brush:js;toolbar:false”>var b = { xi : 20 }
与其余语言不同,JS的引使用数据类型,比方数组Array,它们值的大小是不固定的。引使用数据类型的值是保存在堆内存中的对象。JavaScript不允许直接访问堆内存中的位置,因而我们不可以直接操作对象的堆内存空间。看一下下面的图,加深了解。
比较
?
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » 10分钟理解JS堆、栈以及事件循环的概念