Eine Anfängerfrage, wahrscheinlich eine triviale Frage. Hier ist der XUL-Code-Snippet:Umfang der JavaScript-Variablen (XUL-bezogen)
<window
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<script type="application/javascript" src="chrome://.../main.js"/>
<button label="Click me!" oncommand="clickhandler()"/>
</window>
Der JavaScript-Code:
// main.js
var test = "Peanut butter"; // a global variable
function clickhandler() {
alert(test);
}
Der Interpreter verarbeitet die JavaScript-Datei direkt nach dem Hauptfenster des Starttag zu lesen und geht dann mit dem Rest des XUL-Code. Meiner Meinung nach sollte die Variable test
in dem Moment, in dem der Interpreter die Verarbeitung main.js
beendet, den Gültigkeitsbereich verlassen. Darüber hinaus sollte die clickhandler()
Funktion auch außerhalb des Gültigkeitsbereichs liegen, was bedeutet, dass wenn die Schaltfläche geklickt wird, nichts passieren sollte. Nun, es sei denn, ich erkläre sie zum Beispiel als document.test
und document.clickhandler()
. Ein simples Experiment hat mich jedoch falsch beurteilt. Sowohl die Funktion als auch die Variable sind vorhanden, wenn auf die Schaltfläche geklickt wird. Wie hoch ist die tatsächliche Lebensdauer von Variablen, die so deklariert sind? Wann sind sie zerstört? Sind sie in der Nähe, bis die Anwendung beendet wird? Best Practices und Referenzen werden sehr geschätzt.
Einige gute Referenzen hier: http://stackoverflow.com/questions/39691/javascript-best-practices. Alles außerhalb einer Funktion und ohne "var" wird im Namespace "window" definiert (z. B. window.test, window.clickhandler) – fenone