Globals sind schlecht, weil sie sofort keine Probleme verursachen. Erst später, nachdem du sie überall benutzt hast, verursachen sie sehr hässliche Probleme - die du nicht mehr lösen kannst, ohne deinen Code von Grund auf neu zu schreiben.
Beispiel: Sie verwenden $body
, um einige Funktionen zu definieren. Das funktioniert gut. Aber schließlich brauchst du auch einen Wert. Sie verwenden also $body.foo
. Funktioniert gut. Dann fügen Sie $body.bar
hinzu. Und dann, Wochen später, benötigen Sie einen anderen Wert, so dass Sie $body.bar
hinzufügen.
Sie testen den Code und es scheint zu funktionieren. Aber Sie haben dieselbe Variable zweimal "hinzugefügt". Dies ist kein Problem, da JavaScript das Konzept "einmal eine neue Variable erstellen" nicht versteht. Es weiß nur "create, es sei denn es existiert bereits." So verwenden Sie Ihren Code und schließlich wird eine Funktion $body.bar
ändern eine andere Funktion zu ändern. Selbst wenn Sie das Problem finden, brauchen Sie viel Zeit.
Deshalb ist es besser sicherzustellen, dass Variablen nur bei Bedarf angezeigt werden können. Auf diese Weise kann eine Funktion nicht eine andere unterbrechen. Dies wird umso wichtiger, je größer der Code wird.
Oder überschreiben einige 'andere' globale Variable namens $ body – Mchl
ja, aber in diesem Beispiel würde es den globalen Wert ersetzen, so dass es nur im Bereich der Funktion – mpapis
Ein Funktionsliteral mit lokalen Variablen, die in deklariert wurden Der gleiche Bereich, in dem die Funktion definiert wurde, wird als [closure] (http://jibbering.com/faq/notes/closures/) bezeichnet und sollte in jQuery ausführlich verwendet werden. – Phrogz