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