Werde ich Probleme haben wenn ich erkläre die gleiche variable mehrmals verwenden?
So können sagen, ich habe einige code:
//Javascript
var elements = [];
function addNumbah1(){
var i = 1;
elements.push(i);
}
function addNumbah2(){
var i = 2;
elements.push(i);
}
... Und das geht weiter bis zu addNumbah999(), ist es schlechte form zu erklären, die i
variable, jedes mal? Wird, dass etwas zu brechen? Soll ich tun:
//Javascript
var elements = [];
var i
function addNumbah1(){
i = 1;
elements.push(i);
}
function addNumbah2(){
i = 2;
elements.push(i);
}
- Ihre beiden Syntaxen sind nicht gleichwertig. Brauchen Sie eine oder drei Variablen?
- das deklarieren von Variablen in einer Funktion macht Sie lokal auf diese Funktion - in deinem zweiten Beispiel, Sie deklarieren die variable im globalen scope
- Ihre erste deklariert eine lokale
i
in jeder Funktion. Jedes mal, wenn Sie rufenaddNumbah1()
,i
wird1
. Die zweite erklärti
weltweit und verwendet die global in jeder Funktion, obwohl Sie auf einen neuen Wert zurückgesetzt bei jedem Aufruf. - Könnte Sie klären, was Sie bedeuten?
- ist es schlechte form zu ändern, den Wert einer globalen, immer und immer wieder so ist? Oder ist es ok?
- Eher letzteres Beispiel etwas kaputt macht. Und Sie müssen nicht zu erklären, 999 sehr ähnliche Funktionen, es ist etwas falsch mit Ihrem code-Struktur.
- Es hängt immer von deinem Anwendungsfall. Eine Zeit, die Sie eine variable ändern möchten in einem höheren Bereich, so werden es andere bemerken, zu anderen Zeiten darfst du nicht ohne etwas zu beschädigen. Sagen Sie uns, was dein code tun soll (welches problem es Ziele), und wir können Ihnen sagen, ob die var sollte eine Globale oder lokale.
- Im Allgemeinen ist es besser, zu vermeiden, deklarieren von Variablen in den globalen Gültigkeitsbereich. Erstens, es ist leicht zu erstellen Kollisionen, vor allem, wenn Sie mit 3rd-party-Skripte. Zweiten, Variablen im globalen Geltungsbereich nicht erhalten, Müll gesammelt, solange die Seite nicht aktualisiert. Sie wollen nicht zu halten, die Variablen im Speicher länger, als Sie müssen. Ändern Sie den Wert einer Variablen nicht etwas falsch mit ihm, es ist wirklich die beiden oben genannten Dinge, die Sie brauchen, um mehr sorgen machen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Kurze Antwort: KEINE, JS Hebezeuge alle Variablendeklarationen an den Anfang des Bereichs, unabhängig davon, wie viele Male haben Sie erklärt:
Übersetzt wird
In deinem ersten Beispiel, sind Sie zu deklarieren
i
als eine variable in einer Funktion Gültigkeitsbereich, das ist, was Sie muss tun, um zu vermeiden, überladen den globalen Bereich. Der Speicher dieser Variablen wird zugewiesen, wenn die Funktion aufgerufen wird und freigegeben, wenn die Funktion zurückgibt (grob Verschlüsse bilden eine Ausnahme, aber das würde uns zu weit). Bedenken Sie:Aber wenn Sie das weglassen der
var
:Du wirst sehen, die 1 ist zweimal alarmiert. Wenn JS nicht finden können, eine Deklaration von Variablen im aktuellen Bereich, es wird sich in die höheren Bereiche bis in eine var zu finden ist. Wenn keine variable gefunden wird, JS erstellen für Sie in den höchsten Bereich (global). Check meine Antwort hier , wie STILLSCHWEIGENDE Annahmen arbeiten für ein detailliertes Beispiel, oder Lesen Sie den MDN-Seiten, vor allem der Abschnitt über Namenskonflikte
Schließlich möchte ich hinzufügen, dass globals, insbesondere die stillschweigenden Annahmen, sind böse. Auch wissen, dass die ECMA6 standard ist klar-Weg von der globalen Variablen und führt die Unterstützung für true-block-Bereiche. Wie Sie hier sehen können
Oh, und wenn Sie wollen, um zu überprüfen, ob eine Funktion verwendet, impliziert globals:
'use strict';
ist eine tolle Sache:Wie Sie sehen können, impliziert globals sind nicht erlaubt. Sehen MDN auf den strikten Modus für die vollständige Erklärung
Die zweite form, mit der globalen
i
könnte in der Tat etwas langsamer sein, weil es definiert in einem höheren Bereich und Variablen definiert, die in einem höheren Bereich länger dauern, um zu beheben.Abgesehen von performance-überlegungen nur stick mit gemeinsamen Leitlinien, es sei denn, die performance ist wirklich ein Problem. In diesem Fall: Umfang Ihrer Variablen so eng wie möglich.
Würde ich dringend raten Ihnen, die erste form.
Die erste Möglichkeit, die du hast, ist in Ordnung. Jede Instanz würde ich nicht wissen das andere ich in den anderen Funktionen.
Sollten Sie dieses tutorial Lesen, auf Globale versus lokale Variablen
Auch, könnte ich schlage vor, eine Optimierung. Warum kann man nicht einfach Folgendes machen, um eventuelle Anzahl (anstelle von separaten Funktionen für jede Anzahl)?
Ist es okay zu deklarieren, die Variablen mit gleichen Namen in unterschiedlichen Funktionen.
Deklarierte Variablen innerhalb einer Funktion existieren nur im Rahmen dieser Funktion, so dass der gleiche Variablenname in verschiedenen Funktionen wird nicht kaputt gehen.
In der Tat, es ist eine gute form zu halten, die Variablen in so kleinen Bereich wie möglich! Globale Variablen kann schwierig sein, zu verwalten und erstellen können, wirklich schlimme bugs, vor allem, wenn eine Funktion nicht die variable, wenn eine andere Funktion versucht, darauf zuzugreifen.
Speziell für einfache Variablen zu deklarieren
jedes mal völlig in Ordnung ist.
Können Sie eine variable deklarieren, die mehrere Male..In Ihrem code, den Sie deklarieren die Variable, die ich in verschiedenen Bereichen hier:
Beachten Sie, dass obwohl Sie können eine variable deklarieren, die mehrere Male, aber in der Regel aber kein guter Programmierstil wie kann es zu bugs/Problemen in Ihrer Anwendung
!
,~
oder()
bits: zum einschalten der Funktion in einem Ausdruck)