请教变量在声明且赋值后,如何在堆栈存储的?

请教变量在声明且赋值后,如何在堆栈存储的?

如题,以下表达式在声明执行后,如何在堆栈中存储的呢?

let obj = {a:1}

想了解该问题的背景:在学习es6SetWeakSet时,

let v = {a:1}
let s = new Set();
s.add(v);
v = null;

打印s里面的值不变,还是有一个元素{a:1}
所以猜测 v{a:1} 存在不同的数据结构上。
不知道猜测对不对?
想知道里面的原理是什么