function fn() {
let obj = {
name: 'Jack',
age: 18,
gender: '男'
}
return obj
}
let o = fn()
-
函数执行的时候,会生成一个函数 执行空间 (我们暂且叫他
xxff00
) -
代码在
xxff00
空间中执行 -
在
xxff00
这个空间中声名了一个 对象空间(xxff11
) -
在
xxff00
这个执行空间把xxff11
这个对象地址返回了 -
函数外部
o
接受的是一个对象的地址没错-
但是是一个在
xxff00
函数执行空间中的xxff11
对象地址 -
因为
o
变量一直在和这个对象地址关联着,所以xxff00
这个空间一直不会销毁
-
-
等到什么时候,执行一句代码
o = null
-
此时,
o
变量不在关联xxff00
函数执行空间中的xxff11
对象地址 -
那么,这个时候函数执行空间
xxff00
就销毁了
-