Ich konnte einige ähnliche Fragen finden, aber ich denke, dass die Antworten, die darin enthalten sind, meine Verwirrung nicht vollständig ausschließen.Variabler Kontrollbereich
Ich bin auf diese Frage beim Spielen mit jQuery gestoßen, aber ich denke, das ist eher eine JS-Frage als jQuery-spezifisch.
Ich fühle mich wie im folgenden Beispiel diese Variablen, die ich definieren möchte, wären gute Kandidaten, um global zu sein, sie haben eine weitreichende Verwendung außerhalb einiger Funktionen, aber ich glaube, dass ich die Belichtung begrenzen möchte.
$(function() {
$containers = $('.container');
$childContainer = $('#childContainer');
//Removed extra code
var $aButton = $('#childButton');
//Removed extra code
$containers.hide();
$childContainer.show(400);
$aButton.on('click', clickChildButton);
//Removed extra code
};
function clickChildButton() {
$containers.hide(400);
$childContainer.show(400);
}
Ich werde eine Reihe von Schaltflächen haben, die verschiedene Container zeigen/verstecken. In allen Fällen muss die Variable $containers
für die anderen Funktionen sichtbar sein, damit sie ausgeblendet werden kann.
Sollte ich globale Variablen (oder vielleicht ein Namespacing Global Object Hack) verwenden oder gibt es eine andere Möglichkeit, den Umfang der $containers
Variable zu begrenzen?
ich nicht so scharf bin auf anonyme Funktionen mithilfe der Klick-Ereignisse behandeln, da sie ein wenig komplexer bekommen (und enthalten mehr als nur die zwei Zeilen in der clickChildButton
Funktion gezeigt beginnen werden.
Hinweis : in diesem speziellen Beispiel könnte es besser sein, den Code Refactoring und eine hideContainers
Funktion erstellen, aber ich bin mehr daran interessiert, wie der Umfang der Variablen im allgemeinen zu steuern, anstatt dieses spezielle Beispiel
Dank
'Ich fühle mich wie im folgenden Beispiel diese Variablen, die ich definieren möchte, wäre gute Kandidaten, global zu sein - Sie sollten so wenig globale wie möglich und vorzugsweise keine haben. Wenn Sie etwas global verfügbar machen müssen, legen Sie eine Namespace-Variable (ein Objekt) offen und hängen Sie alle anderen * Globals * von diesem Namespace ab. Der beste Weg, den Umfang einzuschränken, besteht darin, alles in ein 'IIFE' zu verpacken und' var' zu verwenden - voila - keine Globals. – Adam
@Adam: Vielen Dank für Ihren Kommentar, ich vermutete, dass das, was Sie gesagt haben, der Fall sein könnte. Basierend auf Ihrem Kommentar hier und Amadans Kommentar unten gehe ich auf die IIFE-Route. – BadAtMaths