В то время как var
локализует переменную для функции и подлежит перемещению, большинство языков имеют область видимости блока, а не область функции.
Используя ключевое слово var внутри блока if, но получая доступ к переменной вне этого блока, вы создали конструкцию, которая может сбивать с толку людей, не знакомых с этой идиосинкразией JS.
Дуглас Крокфорд рекомендует использовать один оператор var
в верхней части функции, который указывает все переменные, которые должны быть видны этой функции.
function test(){
var a;
if(true){
a = 5;
}
alert(a);
}
test();
С несколькими переменными вы получите:
function foo () {
var a, b, c, d = "only d has an initial value", e;
// …
}