переменная javascript не определена

Во-первых, давайте посмотрим код.

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

Я думаю, что результат01 .но на самом деле, результат0undefined.

Затем я модифицирую этот код.

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

Да, на этот раз все идет как положено.01 , Я не могу понять, ПОЧЕМУ?

Более интересно, я изменяю код снова.

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

Результат 01.

Итак, кто-нибудь может объяснить это?

Спасибо, что поделились своими взглядами. Я упрощаю этот код

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

два:

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

три:

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

Ответы на вопрос(4)

Ваш ответ на вопрос