JavaScript Dziwne zachowanie zakresu
Przechodzę przez zakres funkcji JavaScript i uruchomiłem to:
var scope = "global";
function f(){
console.log(scope);
var scope = "local";
console.log(scope);
}
f();
Teraz rozumiem, że wyjście pierwszego dziennika jest „niezdefiniowane” z powodu tego, jak js podnosi zmienne w górnej części funkcji. ALE gdy usuwam var z „var scope =” local ”;” pierwszy dziennik wyprowadza dane jako „globalne”, a to sprawia, że drapam się po głowie. Czy ktoś może wyjaśnić, dlaczego tak się dzieje? To znaczy, czy js nie uruchamia sekwencyjnie kodu? W jaki sposób usunięcie VAR może mieć jakikolwiek wpływ na pierwszy dziennik?