Heim > Web-Frontend > js-Tutorial > Eine kurze Analyse der JavaScript-Variablen-Deklaration_Javascript-Fähigkeiten

Eine kurze Analyse der JavaScript-Variablen-Deklaration_Javascript-Fähigkeiten

WBOY
Freigeben: 2016-05-16 15:24:13
Original
1296 Leute haben es durchsucht

Unabhängig davon, wo eine JavaScript-Variablendeklarationsanweisung erscheint, wird sie zuerst vor anderem Code ausgeführt. Der Gültigkeitsbereich einer mit dem Schlüsselwort var deklarierten Variablen ist der aktuelle Ausführungskontext, bei dem es sich um eine umgebende Funktion oder, wenn die Variable außerhalb des Funktionskörpers deklariert wird, um eine globale Variable handeln kann.

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:

function test(){
myname = "huming";
alert(myname);
}
test();  // "huming"
alert(myname);  //"huming" 
Nach dem Login kopieren

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:

// 定义三个全局变量
var global_test = ;
global_test = ; // 反面教材
(function () {
global_test = ; // 反面教材
}());
// 试图删除
delete global_test; // false
delete global_test; // true
delete global_test; // true
// 测试该删除
alert(typeof global_test); // "number"
alert(typeof global_test); // "undefined"
alert(typeof global_test); // "undefined" 
Nach dem Login kopieren

Wie aus dem obigen Beispiel ersichtlich ist, kann global_test1, das durch var außerhalb der Funktion definiert ist, nicht gelöscht werden, und global_test2 und global_test3, die nicht durch var 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:

var myname = "huming"; //声明全局变量
function test() {
alert(myname);
var myname = "local_huming";
alert(myname);
}
test();
Nach dem Login kopieren

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

Das obige Beispiel entspricht

var myname = "huming"; //声明全局变量
function test() {
  var myname;
  alert(maname);<br>  myname = "local_huming";
  alert(myname); // "local"
}
test(); 
Nach dem Login kopieren

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:

function test() {
var a = ,
b = ,
c = a + b,
d = {},
e,
f;
// function body...
}
Nach dem Login kopieren

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.

In JavaScript gibt es vier Möglichkeiten für einen Variablennamen, in den Gültigkeitsbereich einzutreten

In die Sprache integriert, alle Bereiche verfügen über die Schlüsselwörter this und arguments


Formale Parameter, Funktionsparameter sind im gesamten Gültigkeitsbereich gültig


Funktionsdeklaration


Variablendeklaration

Die vier oben aufgeführten Reihenfolgen sind auch die Reihenfolge der Priorität von hoch nach niedrig. Sobald ein Variablenname deklariert wurde, kann er nicht durch andere Variablendeklarationsformen mit niedrigerer Priorität überschrieben werden.

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