js的堆栈的底层机制

131 阅读1分钟

浏览器要js执行代码:

  • 从电脑内存中分配一块内存,用来执行代码(栈内存=> stack)
  • 分配一个主线程,用来自上而下执行js代码

栈内存

  • 变量存储空间
  • 值存储空间(存放基本数据类型和内存地址)

堆内存

  • 存储的是复杂数据类型(例如对象的键值对)

例如1:let a = 12执行的过程

  1. 创建变量a,并放到当前的栈内存的“变量存储空间”

  2. 创建一个值12,并把值存到当前的栈内存的“值存储空间”

  3. 赋值,就是变量和值关联的过程。 例如2:let b = {name: '内容1'}执行的过程

  4. 创建变量b,并放到当前的栈内存的“变量存储空间”

  5. 在内存中分配一块新的内存,用来存储引用类型值(堆内存 => heap),存有十六进制地址。

  6. 把对象中的键值对依次存到堆内存中。

  7. 地址也存到栈内存的“值存储空间”中

  8. 这样,堆内存地址和变量就关联起来了。