Ich habe viele Codes gesehen, die so angefangen haben
var a=a||{};
Jetzt weiß ich, dass es prüft, ob es eine gibt.
Meine Frage ist, warum ich es überprüfen soll, wenn es am Anfang des Codes steht.
Ich meine, der Programmierer weiß, dass a nicht existiert.
4 Antworten
Der Programmierer sollte wissen, ob die Variable vorhanden ist oder nicht.
Es wird verwendet, um verschiedene Skriptteile zusammenzufügen, ohne verfolgen zu müssen, welcher Teil des Skripts zuerst geladen wird. Mehrere Skripte haben zu Beginn denselben Code, sodass sie dieselbe Variable verwenden.
Für das erste Skript wird die Variable deklariert und es gibt keinen vorherigen Wert dafür, daher wird der Wert {}
verwendet.
Bei den folgenden Skripten, die es verwenden, wird var
ignoriert, da die Variable bereits deklariert ist und der zuvor festgelegte Wert der Variablen verwendet wird.
Wenn Sie dieselbe Variable an mehreren Stellen deklarieren, riecht es natürlich nach Code. Am besten sollten Sie verfolgen, was Sie tun, damit Sie es nur einmal deklarieren.
In klareren Code übersetzt
var a; // The variable declaration gets brought up because of hoisting
Weitere Informationen zum Heben hier
if( a ) {
a = a; // if a is a truthy value then assign it to itself
} else {
a = {}; // if a is a falsy value then set the default to an empty object
}
Ich hoffe, das hilft
Grundsätzlich kann Javascript in mehrere Dateien geschrieben werden und in jeder Datei können mehrere Deklarationen und Funktionen definiert werden.
Selbst wenn der Programmierer für eine bestimmte Instanz weiß, ob die Variable vorhanden ist oder nicht, kann nicht festgestellt werden, ob sie bereits vorhanden ist, wenn dieser Code von einer anderen Stelle aufgerufen wird.
Dies sollte nicht in gut geschriebenem Code (alle von einem Entwickler / Haus) geschehen, sondern in Projekten, in denen der js-Code von mehreren Stellen zusammengeführt wird.
Diese SO-Frage enthält eine sehr gute Antwort zu variablen Bereichen in Javascript. Sie sollte Ihre Zweifel klären.
Dies ist eine Verknüpfung, um auf einen Standardwert zurückzugreifen - in diesem Fall {}.