variável javascript é indefinida

Primeiro, vamos ver o código.

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

Eu acho que o resultado é01 .mas de fato, o resultado é0undefined.

Então eu modifico esse código.

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

Sim, desta vez funciona como esperado.01 . Eu não consigo entender, por quê?

Mais interessante, modifico o código novamente.

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

O resultado é 01.

Então, alguém pode explicar isso?

Obrigado por compartilhar seus pontos de vista. Eu simplifico esse código

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

dois:

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

três:

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

questionAnswers(4)

yourAnswerToTheQuestion