function foo(a)
{
var b = a*2;
function bar(c)
{
console.log(a,b,c);
var c= 3;
}
bar(4);
var c= 4;
var a= 2;
}
foo(1);
Warum c ist nicht 3 hier? Trotz der Tatsache, dass var c = 3, ist im lexikalischen Bereich von bar() definiert, warum var c = 4 ausgewählt ist, obwohl es unterhalb des bar() - Aufrufs definiert ist? Bitte helfen Sie mir zu verstehen, wie diese Werte ausgewählt und den Variablen zugewiesen werden.Suche nach Gültigkeitsbereich der Variablen
Verwenden Sie [diese Suche] (/ search? Q =% 5Bjs% 5D + Variable + Hochziehen), um viele Fragen und Antworten zu diesem Thema zu finden, wie zum Beispiel [this one] (http://stackoverflow.com/questions/33540709/javascript-variable-hosting) und ein ** Bündel ** anderer, einschließlich des dupierten Ziels, das ich gerade markiert habe (in diesem Fall ist es ein globales, aber die Antwort ist dasselbe). –