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?

questionAnswers(3)

yourAnswerToTheQuestion