js变量在内存中的堆栈存储

54 阅读1分钟

image.png 关于这段代码

  1. 当执行 const sample ={a:5}时,相当于在堆内存中开辟一块新空间,同时变量sample记录该堆内存地址,存放于栈中。
  2. 接着执行fn(sample),会把变量sample记录的地址值作为实参传入fn中,同时记录在obj副本变量中,可以理解为此时 obj 与 sample 指向同一块堆内存。
  3. 接下来执行 obj = {a:1},相当于重新开辟了一块新的堆内存空间,并将指向堆内存的地址记录于变量obj中,obj存放于栈中。
  4. 此时,obj 与 sample 就不再指向同一块堆内存地址了。