2009-08-24 9 views
2

Solange ich meinen JavaScript-Code aus der jquery $() heraus anrufe. Ready(); Funktion sollte ich nicht Zugriff auf alle Variablen haben, die in meinem JavaScript-Code deklariert sind?Ist die Reihenfolge von Javascript in einer Seite wichtig?

Ich habe Code aus .js-Dateien und Inline.

Ich habe versucht, auf eine Variable zuzugreifen und es sagt, dass es nicht definiert ist, aber wenn ich eine Viewsource mache, kann ich diese Variable sehen.

+0

Hier klicken. Es gibt eine Antwort, die eine Menge erklärt http://stackoverflow.com/questions/7609276/jacascript-function-order-why-does-it-matter – iveetoo

Antwort

4

Sie haben nicht unbedingt Zugriff auf die Variable. Es hängt wirklich vom Gültigkeitsbereich der Variablen ab und davon, wo sie relativ zu ihrem Verwendungsort definiert ist. Wenn die Variable in einem separaten ready() - Block definiert ist, haben Sie möglicherweise keinen Zugriff darauf, auch wenn sie sich im globalen Bereich befindet, wenn dieser ready-Block nach demjenigen ausgeführt wird, auf den Sie ihn verweisen. Um verfügbar zu sein, muss der Code, der die Variable definiert, vor dem Code ausgeführt werden, der darauf verweist, und er muss sich im selben Bereich befinden.

+0

+1 Weitere Informationen: http://docs.jquery.com/Events/Fertig # Fn – ATorras

0

Ja, Sie können auf alle Variablen der obersten Ebene zugreifen. Aber das, nach dem Sie suchen, kann auch mit dem dom ready-Ereignis definiert werden, auch wenn es sich um eine Fenstervariable handelt, nach der der Handler ausgelöst werden kann. Oder es wird in einer JavaScript-Datei dynamisch eingefügt.

1

Nein, Sie sollten Javascript immer in der Reihenfolge laden, in der es benötigt wird. Wenn Sie einige jQuery-Plugins verwenden, sollten Sie jQuery vor diesen Plugins laden, da sie möglicherweise etwas instanziieren, das das/die jQuery-Objekt (e) verwendet, ohne dass Sie es wissen.

Für meine Web-Anwendungen, ich lade Javascripts in der folgenden Reihenfolge:

  • Externe Bibliotheken (jQuery, Prototype, ExtJS)
  • Plugins, die
  • Meine benutzerdefinierten JavaScripts aus diesen Bibliotheken bauen

Ich hoffe meine Antwort war hilfreich.

1

Sie haben Recht, es sollte kein Problem sein, auf Variablen in anderen Dateien zuzugreifen. Es kann ein Problem mit dem Umfang oder einem einfachen Tippfehler geben. In welchem ​​Bereich ist die Variable, auf die Sie zugreifen möchten, und in welchem ​​Bereich möchten Sie sie verwenden?

4

Die Reihenfolge von Javascript ist in der Tat wichtig. Javascript ist in einer linearen Weise innerhalb der Seite ausgeführt werden, so dass, wenn Sie zwei <script>-Tags wie folgt aus:

<script src="test1.js"></script> 
<script src="test2.js"></script> 

test1.js wird geladen und zuerst ausgeführt, dann test2.js. Alles, was global in test1.js deklariert wird, wird im zweiten Skript zugänglich sein, aber nicht umgekehrt.

Ein Nebeneffekt davon ist, dass Skripte auch Block, wenn sie geladen werden, so dass, wenn test1.js eine lange Zeit zu laden, nahmen würden Sie, dass die Ladezeit verlangsamen sehen. Aus diesem Grund ist es empfehlenswert, Javascript, das nicht sofort notwendig ist, unten auf der Seite zu platzieren, so dass fast die gesamte Sache angezeigt wird, bevor das Laden von JavaScript es verlangsamt.

Innerhalb des "on ready" -Ereignisses in jQuery sollten Sie theoretisch Zugriff auf alles haben, was als Teil des DOM geladen wurde, da dies technisch nicht ausgelöst werden sollte, bevor die DOM-Struktur vollständig erstellt wurde.

0

Sie können Ihren Variablenwert in jedem Teil der Seite festlegen, aber es wäre einfacher, sie oben auf der Seite vor Ihrem Funktionscode zu deklarieren.

Josh

Verwandte Themen