esto es lo que no puedo entender.
tengo esta funcion aqui
function foo(){ let a = {a:1}; window.a = a; } como puede ver, esto se asigna a a objeto, por lo que una referencia a él, y luego crea una nueva propiedad en el objeto de la ventana que contiene esta referencia. Si la variable a es local, es un punto de referencia a una dirección en la pila, entonces, ¿cómo puedo acceder desde a ventana, también fuera de la función, cuando se limpia la pila?
Si la variable a es local, es un punto de referencia a una dirección en la pila
No. Si bien una variable puede asignarse en una pila que contiene la referencia, lo que hace referencia (el objeto) probablemente se asigne en "el montón", ya que, como ha notado, su vida útil no se conoce y, como tal, debe administrarse. por el recolector de elementos no utilizados y no se puede asignar a la pila.
Dicho esto, la distinción entre "pila" y "montón" no refleja del todo la realidad de los compiladores JIT modernos.