Declaring a Javascript variable twice in same scope - Is it an issue?
javascript, scope, variables
Solution
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
// ...
}
Problem
Would the following code cause any issues?: ``` var a = 1; var a = 2; ``` My understanding is that javascript variables are declared at the start of the scope. For example: ``` var foo = 'a'; foo = 'b'; var bar = 'c'; ``` Is processed as: ``` var foo; var bar; foo = 'a'; foo = 'b'; bar = 'c'; ``` Therefore would my initial code snippet become: ``` var a; a = 1; a = 2; ``` Or would it become: ``` var a; var a; a = 1; a = 2; ``` I understand that declaring a javascript variable twice in the same scope isn't good practice, but I'm more interested in the impact of doing this.