Потому что в какой строке вы на самом деле объявляете переменную, используя «var», не имеет значения, пока она остается в той же функции.Если функция имеет где-либо объявленное var x
, то любая ссылка на это имя считается локальной в той области, где она объявлена.
Конечно, обычно вы не ссылаетесь на переменную до того, как она объявлена, но рассмотрим этот фрагмент:
function foo(a) {
if (a) {
var b = "something";
}
console.log(b);
}
Переменная b
является локальной для этой функции, поэтому, независимо от значения a
, использование b
не будет случайно ссылаться на переменную, объявленную ввключающая область видимости.
Примечание: javascript имеет только область видимости на уровне функций, он не имеет области видимости на уровне блока.