Heim > Web-Frontend > js-Tutorial > Hauptteil

Unterschiedliches Verständnis und Analyse der JavaScript-Variablendeklaration und Definition der Variablenvariable

伊谢尔伦
Freigeben: 2017-07-18 10:57:26
Original
1435 Leute haben es durchsucht

Schauen wir uns ein einfaches Beispiel an, um das Problem zu veranschaulichen

if (!("a" in window)) {
    var a = 1;
}
alert(a);
Nach dem Login kopieren

Zunächst sind alle globalen Variablen Attribute von window. Die Anweisung var a = 1; window. a = 1;

Sie können die folgende Methode verwenden, um zu erkennen, ob globale Variablen deklariert sind

"Variablenname" im Fenster

Zweitens alle Variablen Deklarationen sind Oben im Bereichsbereich sehen Sie sich ein ähnliches Beispiel an:

Kopieren Sie den Code Der Code sieht folgendermaßen aus:

alert("a" in window);
var a;
Nach dem Login kopieren

At Auch wenn die Deklaration an diesem Punkt in der Warnung ist, ist das Warnungs-Popup immer noch wahr. Dies liegt daran, dass die JavaScript-Engine zunächst alle Variablendeklarationen scannt und diese dann nach oben verschiebt. Der endgültige Codeeffekt ist wie folgt :

var a;
alert("a" in window);
Nach dem Login kopieren

Drittens müssen Sie verstehen, dass die Bedeutung dieser Frage darin besteht, dass die Variablendeklaration fortgeschritten ist, die Variablenzuweisung jedoch nicht, da diese Codezeile die Variablendeklaration und Variablenzuweisung enthält.

Sie können die Anweisung in den folgenden Code aufteilen:

var a;    //声明
a = 1;    //初始化赋值
Nach dem Login kopieren

Zusammenfassend lässt sich sagen, dass die JavaScript-Engine sie automatisch aufteilt, wenn Variablendeklaration und -zuweisung zusammen verwendet werden Die beiden Schritte bestehen darin, Variablen im Voraus zu deklarieren, den Zuweisungsschritt jedoch nicht voranzutreiben, da dies die Ausführung des Codes beeinträchtigen und zu unvorhersehbaren Ergebnissen führen kann.

Der Code in der Frage entspricht:

var a;
if (!("a" in window)) {
    a = 1;
}
alert(a);
Nach dem Login kopieren

Laut der Analyse der obigen Beispielfrage gilt beim Deklarieren einer Variablen, wenn es sich um eine deklarierte lokale Variable handelt, var muss davor hinzugefügt werden. Globale Variablen müssen nicht hinzugefügt werden (es ist am besten, die Anzahl globaler Variablen zu begrenzen und lokale Variablen so weit wie möglich zu verwenden)

Im Folgenden werden mehrere beschrieben Merkmale der Verwendung von var

Die Verwendung einer var-Anweisung zur mehrfachen Deklaration einer Variablen ist nicht nur zulässig, sondern verursacht auch keine Fehler.
Wenn eine wiederverwendete Anweisung einen Anfangswert hat, spielt sie nur die Rolle einer Zuweisungsanweisung.
Wenn eine wiederverwendete Deklaration keinen Anfangswert hat, hat dies keine Auswirkungen auf die ursprünglich vorhandenen Variablen.
Variablen ohne var-Deklaration existieren als globale Variablen; Variablen mit var-Deklaration sind lokale Variablen, insbesondere innerhalb von Funktionen. Darüber hinaus ist die Deklaration mit var nach dem Testen schneller als ohne var. Richten Sie so viele lokale Variablen wie möglich in der Funktion ein, damit sie sicher und schnell ist und die Variablenoperation sinnvoller ist. Logikfehler werden nicht durch zufällige Manipulation globaler Variablen in der Funktion verursacht.

Beim Deklarieren eines Objekts ist es am besten, die Self-Face-Methode des Objekts zu verwenden, die viel schneller ist als die neue Methode.

Der Variablenname wird von Ihnen selbst gewählt. Um Semantik und Spezifikationen zu gewährleisten, kann der Variablenname etwas länger sein, aber bitte beachten Sie, dass die Länge des Variablennamens auch Auswirkungen auf die Ausführung hat Geschwindigkeit des Codes. Deklarationen mit langen Variablennamen werden nicht so schnell ausgeführt wie kurze.

Das Thema ist wie folgt: Was sind die Ergebnisse der beiden Warnungen?

<script
type="text/javascript">
    var a = 1;
    var a;
    alert(typeof a);
(function () {
        b = &#39;-----&#39;;
        var b;        
    })();
    alert( typeof b);
</script>
Nach dem Login kopieren

Führen Sie den Code in Chrome aus. Das korrekte Ergebnis des Codes ist 1.Nummer 2.undefiniert. Was hier untersucht wird, ist das Konzept der JavaScript-Variablendeklaration im Voraus.

Wir betrachten ein weiteres Beispiel wie das folgende:

test();
function test(){    
alert("Hello World!");
}
Nach dem Login kopieren

Das Programm meldet keinen Fehler, aber das laufende Ergebnis lautet: Hallo Welt!. Prinzip: Bevor der Computer mit der Ausführung der Anweisung beginnt, sucht er zunächst nach allen Funktionsdefinitionen und speichert dann die zugehörigen Funktionen.
Frage 1:
var a = 1;
var a;
Die Deklaration der Variablen a in Zeile 2 entspricht der Deklaration von a oben, und dann besteht der erste Satz darin, a neu zu deklarieren und dann Der zugewiesene Wert ist 1. Typ von a ist also Zahl
Frage 2:
b = '-----';
var b; , prüft es, ob im Kontext eine Deklaration der Variablen b vorhanden ist. Wenn ja, wird der Wert direkt „-----“ zugewiesen. Aber Alert(typeof b); liegt außerhalb der Funktion und gibt die globale Variable b aus, die alle undefiniert sind.
Bitte beachten Sie: Die Zuweisung zu Variablen erfolgt nicht im Voraus.

Das obige ist der detaillierte Inhalt vonUnterschiedliches Verständnis und Analyse der JavaScript-Variablendeklaration und Definition der Variablenvariable. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!