将本地引用分配给全局

Assigning local reference to global

这是我无法理解的地方。

我这里有这个功能

function foo(){
let a = {a:1};
window.a = a; 
}

如您所见,这分配给 a 一个对象,因此是对它的引用,然后它在包含此引用的 window 对象上创建一个新的 属性 .如果 a 变量是本地的,它是指向堆栈中地址的引用,那么,当堆栈被清理时,我如何从 window 访问 a,也在函数之外?

If the a variable is local, it's reference point to an address in the stack

没有。虽然变量可能分配在包含引用的堆栈上,但它引用的内容(对象)可能分配在“堆”上,因为 - 正如您已经注意到的那样 - 它的生命周期是未知的,因此必须由垃圾收集器,不能 stack-allocated.

也就是说,“堆栈”与“堆”的区别并不能完全反映现代 JIT-compilers 的现实。