zmienna javascript jest niezdefiniowana

Najpierw zobaczmy kod.

var a=0;
b=1;
document.write(a);
function run(){
    document.write(b);
    var b=1;
}
run();

Myślę, że wynik jest01 , ale w rzeczywistości jest0undefined.

Następnie modyfikuję ten kod.

var a=0;
b=1;
document.write(a);
function run(){
    document.write(this.b); //or document.write(window.b)
    var b=1;
}
run();

Tak, tym razem działa zgodnie z oczekiwaniami.01 . Nie mogę zrozumieć, DLACZEGO?

Bardziej interesujące, modyfikuję kod ponownie.

var a=0;
b=1;
document.write(a);
function run(){
    document.write(b);
    //var b=1;       //I comment this line
}
run();

Wynik to 01.

Czy ktoś może to wyjaśnić?

Dziękujemy za udostępnienie swoich punktów widzenia. Upraszczam ten kod

b=1;
function run(){
    console.log(b); //1
}

dwa:

b=1;
function run(){
    var b=2;
    console.log(b); //2
}

trzy:

b=1;
function run(){
    console.log(b); //undefined
    var b=2;
}

questionAnswers(4)

yourAnswerToTheQuestion