Worum geht es in diesem kleinen Codeschnipsel?
Fall 1:
einbeziehen. function a(){}
Definition innerhalb des Körpers von function b
wie folgt. logs value of a = 1
var a = 1;
function b() {
a = 10;
return;
function a() {}
}
b();
console.log(a); // logs a = 1
Fall 2
Ausgeschlossen sind function a(){}
Definition innerhalb des Körpers von function b
wie folgt. logs value of a = 10
var a = 1;
function b() {
a = 10; // overwrites the value of global 'var a'
return;
}
b();
console.log(a); // logs a = 10
Die Beobachtung wird Ihnen helfen, diese Aussage zu realisieren console.log(a)
protokolliert die folgenden Werte.
Fall 1 : a = 1
Fall 2 : a = 10
Stellungen
var a
wurde lexikalisch im globalen Bereich definiert und deklariert.
a=10
Diese Anweisung weist den Wert 10 neu zu, sie befindet sich lexikalisch innerhalb der Funktion b.
Erläuterung der beiden Fälle
Wegen der function definition with name property
a ist gleich dem variable a
. Die variable a
innerhalb der function body b
wird zu einer lokalen Variablen. Die vorherige Zeile bedeutet, dass der globale Wert von a erhalten bleibt und der lokale Wert von a auf 10 aktualisiert wird.
Was wir also sagen wollen, ist, dass der folgende Code
var a = 1;
function b() {
a = 10;
return;
function a() {}
}
b();
console.log(a); // logs a = 1
Er wird vom JS-Interpreter wie folgt interpretiert.
var a = 1;
function b() {
function a() {}
a = 10;
return;
}
b();
console.log(a); // logs a = 1
Wenn wir jedoch die function a(){} definition
El value of 'a'
außerhalb der Funktion b deklariert und definiert ist, wird dieser Wert überschrieben und ändert sich im Fall 2 in 10. Der Wert wird überschrieben, weil a=10
bezieht sich auf die globale Deklaration, und wenn sie lokal deklariert werden soll, müssen wir schreiben var a = 10;
.
var a = 1;
function b() {
var a = 10; // here var a is declared and defined locally because it uses a var keyword.
return;
}
b();
console.log(a); // logs a = 1
Wir können unsere Zweifel weiter klären, indem wir die name property
en function a(){} definition
unter einem anderen Namen als 'a'
var a = 1;
function b() {
a = 10; // here var a is declared and defined locally because it uses a var keyword.
return;
function foo() {}
}
b();
console.log(a); // logs a = 1