前言
前些日子,在掘金上看到一片热门文章《在酷家乐做面试官的日子》。该文作者以面试官的角度,详细阐述了作为一名 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)原则
它在生活中,更加类型排队的场景(先排队的人,先吃饭):