• 栈:存储货物或者供旅客住宿的地方,可引申为仓库

    数据结构中的栈

    栈是一组数据的存放方式,特点是先进后出,后进先出
    image.png
    image.png
方法名 操作
push() 添加新元素到栈顶
pop() 移除栈顶的元素,同时返回被移除的元素
  1. class Stack {
  2. private item = []
  3. // 添加元素在栈顶,也就是栈的末尾
  4. push(el) {
  5. this.push(el)
  6. }
  7. // 栈先进后出原则,从栈顶出栈
  8. pop() {
  9. return this.item.pop()
  10. }
  11. }

代码的运行方式

  1. function one() {
  2. function two() {
  3. function three() {
  4. debugger;
  5. }
  6. three();
  7. }
  8. two();
  9. }
  10. one();

image.png

内存区域

  • 栈也是存放数据的一种内存区域
  • 程序运行的时候,需要内存空间存放数据,一般来说系统会划分出两种不同的内存空间:一种叫做栈stack,另一种叫做堆heap
    • stack是有结构的,每个区块按照一定次序存放,可以明确知道每个区块的大小
    • heap是没有结构的,数据可以任意存放,因此,stack的寻址速度要快于heap
  • 只要是局部的,占用空间确定的数据,一般是存放在栈中,否则放在堆里,所有对象都放在堆里面
    1. function task() {
    2. var a = 1;
    3. var b = 2;
    4. var c = {
    5. name: 'zhufeng',
    6. age: 10
    7. }
    8. }
    9. task();
    image.png
    js的基本类型:
    基本数据类型:null undefined string number boolean symbol
    引用数据类型:Object Array Regex
    js属于弱数据类型,不要明显的区分是存放在栈里还是堆里