The temptation then becomes to re-use the name but I avoid that to make it easier to see which declaration belongs to which variable.
Declaring all the variables at the top of a function was a pretty hard to break habit.
Which is much more preferable than scattered around the function. Especially due to hoisting[1].
My functions typically go in the order of:
declare variables; declare any local functions if necessary (most of the time these eventually get refactored out to somewhere else, because they tend to be one-off utility functions that can be abstracted); do stuff; return value.
1. http://www.adequatelygood.com/2010/2/JavaScript-Scoping-and-...
"I prefer minimum-length but maximum-information names, and then let the context fill in the rest. Globals, for instance, typically have little context when they are used, so their names need to be relatively evocative. Thus I say maxphysaddr (not MaximumPhysicalAddress) for a global variable, but np not NodePointer for a pointer locally defined and used. This is largely a matter of taste, but taste is relevant to clarity."
[1] or seperated by underscores or dashes in up- or lowercase wearing earmuffs