La variable javascript no está definida

Primero, veamos el código.

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

Creo que el resultado es01 .pero de hecho, el resultado es0undefined.

Luego modifico este 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();

Sí, esta vez se ejecuta como se esperaba.01 . No puedo entender por que

Más interesante, modifico el código de nuevo.

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

El resultado es 01.

Entonces, ¿Alguien puede explicar esto?

Gracias por compartir tus puntos de vista. Simplifico este codigo

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

dos:

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

Tres:

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