Local Javascript scoping issue

Viewed 443

If I do this:

var a = 0;

(function () {
    var a = a; //want to make local a = global a
    ++a;
    console.log("fn",a);
})();

console.log(a);​

The output is:

fn NaN
0

Why does a inside of the self executing function become NaN?

I know it works fine if I do:

(function () {
    var b = a;
    ++b;
    console.log("fn",b); // fn 1
})();

But if I go the way of the first version, it has the NaN issue.

Why is this happening?

4 Answers
Related