Declaring a Javascript variable twice in same scope - Is it an issue?
As you said, by twice of more the same var, JavaScript moves that declaration to the top of the scope and then your code would become like this:
var a;
a = 1;
a = 2;
Therefore, it doesn't give us any error.
This same behaviour occurs to for
loops (they doesn't have a local scope in their headers), so the code below is really common:
for (var i = 0; i < n; i++) {
// ...
}
for (var i = 0; i < m; i++) {
// ...
}
That's why JavaScript gurus like Douglas Crockford suggest programmers to manually move those declarations to the top of the scope:
var i; // declare here
for (i = 0; i < n; i++) { // initialize here...
// ...
}
for (i = 0; i < m; i++) { // ... and here
// ...
}
Declaring the same variable twice is as good as declaring it once. Below statement will not bring any impact.
var a, a;
in the below case you are just overriding the variable foo. This will have an impact if you have foo defined in the local and global scope. JS will search foo in the local scope first and then if it doesn't find it will look in the global scope.
var foo;
var bar;
foo = 'a';
foo = 'b';
bar = 'c';