What I have seen often is this:

```javascript
for (var i = 0; i < n; ++i) {
  // stuff..
}

// later in the same scope:

for (var i = 0; i < q; ++i) {
  // stuff..
}
```

While the double-declaration does not create an error, I see it as representative of a confusion that some programmers have with the language. Explicit declarations where variables are hoisted to results in code that is representative of what is actually happening. I prefer it for the same reason that I prefer semi-colons "always". 

Also, one can legitimately use declared identifiers outside of the intended control structure in a way that is reasonable, so I don't agree that it implies an error.

I suppose that I prefer to err on the side of whatever is most explicit, because the most common complaint I hear levied against JavaScript is that it isn't immediately obvious what is going on.