Ok, makes sense, the above code uses the variable 'n' that's created inside the function, which hasn't yet been assigned a value the first time it's printed. In many places you may not even notice, or get a big ol' undefined, which you can fix. But somewhere this can really screw you is in loops where you're closing over a variable that ends up being declared in function scope outside the loop. See the following example:
This example demonstrates that 'msg' is shared between the three invocations of 'alert'. Avoid this fate by getting in the habit of explicitly declaring the variables that your closure is closing over by passing them in as arguments and binding them at the time the closure is created, as below.