Heim >Web-Frontend >js-Tutorial >Detaillierte Erläuterung der JavaScript-Variablen-Deklaration_Javascript-Fähigkeiten

Detaillierte Erläuterung der JavaScript-Variablen-Deklaration_Javascript-Fähigkeiten

WBOY
WBOYOriginal
2016-05-16 16:30:091458Durchsuche

Dinge, die außerhalb des Funktionskörpers definiert sind, sind globale Variablen, und Dinge, die innerhalb des Funktionskörpers definiert sind, sind lokale Variablen. Die Definition hier bezieht sich auf die Deklaration durch var.

JavaScript verfügt über das Konzept impliziter Globals, was bedeutet, dass jede Variable, die Sie nicht deklarieren, zu einer globalen Objekteigenschaft wird. Zum Beispiel:

Code kopieren Der Code lautet wie folgt:

Funktionstest(){
Myname = "huming";
Alert(meinName);
}
test(); // "summend"
alarm(myname); //"huming"

Die beiden Ergebnisse sind gleich, was darauf hinweist, dass myname eine globale Variable ist.

Gibt es also einen Unterschied zwischen impliziten globalen Variablen und explizit definierten globalen Variablen? . Die Antwort lautet definitiv „Ja“, sehen Sie sich das Beispiel unten an:

Code kopieren Der Code lautet wie folgt:

// Definiere drei globale Variablen
var global_test1 = 1;
global_test2 = 2; // Negatives Lehrmaterial
(Funktion () {
Global_test3 = 3; // Negatives Lehrmaterial
}());
// Versuch,
zu löschen delete global_test1; // false
delete global_test2; // true
delete global_test3; // true
// Testen Sie den Löschvorgang
warning(typeof global_test1); // "number"
Alert(typeof global_test2); // "undefiniert"
Alert(typeof global_test3); // "undefiniert"

Aus dem obigen Beispiel geht hervor: Global_test1, der durch eine Variable außerhalb der Funktion definiert ist, kann nicht gelöscht werden, und global_test2 und global_test3, die nicht durch eine Variable definiert sind, werden gelöscht (unabhängig davon, ob sie innerhalb des Funktionskörpers erstellt werden).

Zusammenfassend lässt sich sagen, dass globale Variablen, die über var außerhalb der Funktion deklariert wurden, nicht gelöscht werden können, implizite globale Variablen jedoch.

Hier ist zu beachten: JavaScript hat ein Verhalten namens „Hoisting“ (Suspendieren/Top-Parsing/Vorparsing).

Lassen Sie es uns anhand eines Beispiels veranschaulichen:

Code kopieren Der Code lautet wie folgt:

var myname = "huming"; //Globale Variablen deklarieren
Funktionstest() {
Alert(meinName);
var myname = "local_huming";
Alert(meinName);
}
test();

Glauben Sie, dass der Inhalt der beiden Warnungen derselbe ist? ? Offensichtlich inkonsistent, natürlich konsistent. . Die tatsächliche Ausgabe ist: „undefiniert“, „local_huming“.

Das obige Beispiel entspricht

Code kopieren Der Code lautet wie folgt:

var myname = "huming"; //Globale Variablen deklarieren
Funktionstest() {
var meinname;
Alert(maname);
myname = "local_huming";
Alert(meinName); // „local“
}
test();

Der von der ersten Warnung ausgegebene myname ist nicht die globale Variable, die Sie vermuten, sondern eine lokale Variable im selben Gültigkeitsbereich (ein Funktionskörper). Obwohl es nicht deklariert wurde, wird es als solches behandelt. Dies nennt man „Heben“.

Das sollte es klarstellen. Wenn Sie eine Variable in einem Funktionskörper verwenden und sie später erneut deklarieren, kann ein Fehler auftreten.

Schreibvorgaben:

Code kopieren Der Code lautet wie folgt:

Funktionstest() {
var a = 1,
b = 2,
        c = a b,
      d = {},
        e,
         f;
// Funktionskörper...
}

Die Vorteile sind:

1. Alle lokalen Variablen werden zur einfachen Suche am Anfang der Funktion definiert;

2. Verhindern Sie logische Fehler, wenn Variablen verwendet werden, bevor sie definiert werden.

Haben Sie die Variablendeklaration von JavaScript verstanden? Der obige Inhalt ist sehr detailliert und leicht zu verstehen. Die abschließende Zusammenfassung ist auch sehr relevant.

Stellungnahme:
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