Die erste goldene Regel:
JS hat keinen Umfang auf Blockebene (Sie können ihn mit Schließungen oder anderen Methoden selbst implementieren), nur um Funktionen auf Funktionsebene. Variablen außerhalb der Funktion können in der Funktion gefunden werden, aber Variablen innerhalb der Funktion können nicht außerhalb gefunden werden.
Firsttry:
Warum ist das? ?
var a = 10; Funktion aaa () {// Step-4Alert (a); // Schritt 5-> Alarm ausführen. Zu diesem Zeitpunkt können Sie nur die Außenseite A = 10 finden.Tatsächlich versteht jeder das Prinzip, es sollte nur eine Frage der einfachen Fehler sein, und alles wird sich ändern.
Secondtry:
Warum ist das? Denn wenn a B zugewiesen wird, ist B noch nicht definiert, so ist A undefiniert und B 10.
Artikel 2 des Goldenen Code:
Die Suche nach Variablen ist das Prinzip der Nähe. Um die von VAR definierten Variablen zu finden, wenn sie nicht in der Nähe gefunden werden, suchen Sie nach der Außenschicht.
sehen:
Warum ist das? Dafür gibt es zwei Gründe: Eine ist eine Voranalyse, und der andere sucht in der Nähe.
var a = 10; Funktion aaa () {alert (a); // undefiniert. Bei der Suche nach A werden Sie in der Funktion nachschlagen. Aufgrund der Auswirkung der Vordarstellung ist a zu diesem Zeitpunkt undefiniert, sodass Sie niemals nach dem Außenbereich 10 var a = 20;/*vorbereiten var aalert (a); var a = 20;*/} aaa ();Aufmerksamkeit:
Überprüfen wir den zweiten Element. Obwohl es das Prinzip der Nähe ist, soll die von Var in der Nähe deklarierte Variable ermittelt werden. Dies liegt daran, dass die von VAR deklarierten Variablen global sind. Hier ist der Wert von A nur geändert. Das obige ist also, weil das A von var nicht in der Funktion zu finden ist, also ging ich nach draußen und fand es, sobald ich gesucht habe. Aber die Wahrheit ist, dass A nach a = 20 tatsächlich 20 ist, aber es wurde noch nicht ausgeführt, wenn es alarmiert wurde ~~
Siehe ~
Das folgende Beispiel überprüft weiter den Funktionsumfang von JS:
Dies liegt daran, dass wenn Alert (a), eine in der BBB -Funktion tatsächlich 20 beträgt, aber zu diesem Zeitpunkt lokal zum Satzalarm (a) ist. Alert (a) kann in der BBB -Funktion keine finden, daher kann es in der AAA -Funktion keine finden, daher geht es nach draußen und findet 10.
Artikel 3 des Goldenen Code:
Wenn Parameter mit lokalen Variablen dupliziert werden, ist die Priorität gleichwertig.
Beispiel:
Außerdem: Beim Übergeben von Parametern übergibt der Basistyp den Wert und der Referenztyp übergibt die Referenz. (Aber nach der Neuzuweisung ist es nicht der Fall)
var a = 5; var b = a; b += 3; alarm (a); // 5var a = [1,2,3]; var b = a; b.push (4); alarm (a); // [1,2,3,4];
Es gibt kein Problem mit dem obigen Code, aber das folgende ist anders.
Da B neu zugewiesen ist, zeigt es nicht auf a.
Darüber hinaus ist der Umfang der Parameter und Variablen ähnlich:
Vergleichen Sie diese beiden:
Die obigen Parameter sind grundlegende Typen, und nur die Werte werden übergeben. Im Folgenden finden Sie einen Referenztyp: (auch den Fall der Neuzuweisung enthält).