一天一个知识点 - 浅谈 JavaScript 堆、栈、队列是什么?都有什么区别?

前言

前些日子,在掘金上看到一片热门文章《在酷家乐做面试官的日子》。该文作者以面试官的角度,详细阐述了作为一名 web 应聘者应该具有哪些技能,才会更让人青睐。

在对比自身的过程中,发现有一些问题,或许了解,但不全面,这也是本系列文章诞生的缘由。

什么是栈

在前文 一天一个知识点 - 浅谈 JavaScript 的数据类型 有提到过原始类型的存储空间,原始类型包含:

  • Boolean
  • Null
  • Undefined
  • Number
  • String
  • Symbol (ECMAScript 6 新定义)

原型类型都存储在栈内存中,是大小固定并且有序的,遵循 后进先出 (Last-In-First-Out)原则

在生活中,类似整理书籍(最后整理的书,总是在最上面):

什么是堆

JavaScript 的数据类型除了原始类型,还有一类是 Object 类型,它包含:

  • Object
  • Function
  • Array
  • Date
  • RegExp

Object 类型都存储在堆内存中,是大小不定,复杂可变的。

准确来讲的话:

Object 类型数据的 指针 存储在栈内存空间, 指针 实际指向的值存储在堆内存空间

什么是队列

队列与栈内存的存储特性比较像

队列是大小不定并且有序的,遵循 先进先出* (First-In-First-Out)原则

它在生活中,更加类型排队的场景(先排队的人,先吃饭):

参考

系列文章

转载于:https://juejin.im/post/5c909e7ff265da60f16316b6

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值