function test(){
if(true){
var a = 5;
}
alert(a);
}
test();
I keep getting ‘out of scope’ errors in my JS code when I check with JsLint which make no sense to me.So I quickly created an example. Is there something actually wrong with this code piece, as the variable is eventually hoisted to the top of the function anyways.
While
varlocalizes a variable to the function and is subject to hoisting, most languages have block scope and not function scope.By using the var keyword inside an if block, but accessing the variable outside that block, you’ve created a construct that can be confusing to people not familiar with that JS idiosyncrasy.
Douglas Crockford recommends using a single
varstatement at the top of a function that specifies all the variables that should be scoped to that function.With multiple variables you would have: