Lebensdauer von JavaScript-Variablen

8

Was ist die Lebensdauer einer Variablen in JavaScript, die mit "var" deklariert wird? Ich bin mir sicher, es ist definitiv nicht erwartungsgemäß.

%Vor%

Wie und wann speichert JavaScript Müll die Variable a ? Da a ein Teil des Abschlusses der inneren Funktion ist, sollte es im Idealfall niemals Müll sammeln, da die innere Funktion fun als Verweis auf einen externen Kontext übergeben werden kann. Daher sollte fun immer noch auf a vom externen Kontext zugreifen können.

Wenn mein Verständnis richtig ist, wie geschieht dann die Speicherbereinigung und wie stellt es sicher, dass genügend Speicherplatz vorhanden ist, da alle Variablen im Speicher verbleiben, bis die Ausführung des Programms möglicherweise nicht haltbar ist?

    
The Machine 22.04.2010, 11:55
quelle

2 Antworten

4

Die ECMAScript-Spezifikation legt nicht fest, wie der Garbage Collector funktionieren soll. Sie besagt nur, dass wenn ein Bezeichner erreichbar ist (durch einen direkten Zeiger oder eine Schließung), er nicht GCed sein sollte.

Sehen Sie sich dieser Artikel über Bezeichnerauflösung, Closures, Bereichsverkettung und Garbage Collection in ECMAScript.

Hoffe es hilft

    
Pablo Cabrera 22.04.2010, 12:28
quelle
1

'a' wird nicht Müll gesammelt werden, solange es externe Verweise auf 'Spaß' gibt. Der Browser stellt sicher, dass genügend Arbeitsspeicher vorhanden ist, indem nach mehr Arbeitsspeicher vom Betriebssystem gefragt wird.

    
Jeffery To 22.04.2010 12:58
quelle