Heim > Web-Frontend > js-Tutorial > Einführung in den Variablenbereich in JavaScript_Javascript-Tipps

Einführung in den Variablenbereich in JavaScript_Javascript-Tipps

WBOY
Freigeben: 2016-05-16 16:22:57
Original
1372 Leute haben es durchsucht

Für den Umfang von Variablen verwenden Sprachen wie C und Java die Methode „Blockbereich“. Im Gegensatz dazu verfolgt JavaScript einen „Funktionsbereich“-Ansatz – der Umfang einer Variablen wird nur durch die Funktion bestimmt, in der sie sich befindet, und hat nichts mit logischen Blöcken wie if und for zu tun. Das folgende Beispiel zeigt beispielsweise das Verhalten in JavaScript, das sich von C, Java und anderen Sprachen unterscheidet:

Code kopieren Der Code lautet wie folgt:

function(){
var s = 42;//s ist während der gesamten Funktion sichtbar
if (s > 3) {
var x = "test";//x ist während der gesamten Funktion sichtbar
for(var i=0; i<10; i ){
console.log(i);
}
console.log(i);//i ist während der gesamten Funktion sichtbar
}
console.log(i);
console.log(x);
}

In Sprachen mit „Blockbereich“ wie C und Java werden nach dem Ende logischer Blöcke wie if-Anweisungen und for-Anweisungen die in diesen logischen Blöcken definierten Variablen zerstört. JavaScript ist anders. Solange eine Variable innerhalb einer Funktion definiert ist, kann der gesamte Code innerhalb der gesamten Funktion auf die Variable zugreifen, auch wenn diese Codes vor der Definition der Variablen vorhanden sind:

Code kopieren Der Code lautet wie folgt:

function(){
console.log(a);//undefiniert
var a = "test";
console.log(a);//test
}

Wenn im obigen Beispiel noch nie eine In-Funktion definiert wurde, löst console.log(a) einen ReferenceError aus. Wenn a in einer Funktion definiert ist, ist der Aufruf von a eine zulässige Operation, auch wenn die Definition nach der aufrufenden Anweisung einer Variablen erfolgt (wenn die Definition einer Variablen nach der aufrufenden Anweisung erfolgt, dann ist der Wert der Variablen a in der aufrufende Anweisung ist undefiniert). Tatsächlich wird die Definitionsoperation für alle mit dem Schlüsselwort var innerhalb einer Funktion definierten Variablen an den Anfang der Funktion gebracht (die Zuweisungsoperation bleibt weiterhin in der Zeile, in der var definiert ist). Dies wird in JavaScript als Heben bezeichnet. Der obige Code entspricht beispielsweise:

Code kopieren Der Code lautet wie folgt:

function(){
var a;
console.log(a);//undefiniert
a = "test";
console.log(a);//test
}

Bereichskette von Variablen

Kontakt Speicherung von Variablen in JavaScript, Sie können ein gutes Verständnis des „Funktionsumfangs“ und des Hebens in JS erlangen. Da Variablen im globalen Objekt oder im Funktionsaufrufobjekt gespeichert werden, gibt es beim Definieren einer Variablen in einer Funktion unabhängig davon, wo die Variable in der Funktion definiert ist, zwangsläufig ein Funktionsaufrufobjekt mit diesem Wert im Funktionsaufrufobjekt . Eine Eigenschaft mit demselben Namen wie die Variable. Auf diese Weise kann von überall in der Funktion auf die Variable zugegriffen werden.

Wenn es um Funktionsaufrufe geht, gibt es in JavaScript ein interessanteres Konzept: die Bereichskette von Variablen – da Variablen im globalen Objekt oder im Funktionsaufrufobjekt gespeichert werden, können Sie beim Zugriff auf die Variable von mehreren darauf zugreifen Objekte. Holen Sie sich den Wert. Nehmen Sie den folgenden Code als Beispiel:

Code kopieren Der Code lautet wie folgt:

var x = "test";
function(){
//Level-1-Funktion
var x = "temp";
function(){
//Level-2-Funktion
var x = "real";
//versuche hier auf x zuzugreifen. x wird „echt“ sein.
}
}

Innerhalb der Level-2-Funktion im obigen Code kann das Programm beim Versuch, auf die x-Variable zuzugreifen, nach dem entsprechenden Attributwert aus drei Objekten suchen: dem Funktionsaufrufobjekt, das zum Aufrufen der Level-2-Funktion verwendet wird, Funktionsaufruf Objekte und globale Objekte, die zum Aufrufen von Funktionen der Ebene 1 verwendet werden – Basierend auf der verschachtelten Beziehung von Funktionsdefinitionen generiert JavaScript eine Objektkette, die aus globalen Objekten und Funktionsaufrufobjekten besteht. Beim Zugriff auf eine Variable beginnt das Programm mit der Suche bei dem Objekt, das der Zugriffsanweisung am nächsten liegt. Wenn keine Suche gefunden wird, wird die Suche im Objekt auf der oberen Ebene der Objektkette bis zum globalen Objekt fortgesetzt.

Da diese Objektkette mit dem Gültigkeitsbereich der Variablen zusammenhängt, wird sie auch „Bereichskette“ genannt.

Wenn Sie die Bereichskette vorübergehend ändern und ein Objekt am Anfang der Bereichskette einfügen müssen (als erstes Funktionsobjekt, auf das zugegriffen wird), können Sie die with-Anweisung verwenden:

Code kopieren Der Code lautet wie folgt:

mit(o){
//Code verwendet Eigenschaften des Objekts o.
}

Im strikten JavaScript-Modus ist die with-Anweisung jedoch deaktiviert. Auch im nicht strikten Modus wird die Verwendung der with-Anweisung nicht empfohlen.

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