I wasn't hinting at FOR. Even so, upvars in FOR actually do spill out of the loop, like in:
You can do this without declaring "ï" anywhere else (in this case, it is reported as: 11, which may be understandable from an implementation ~, but not from a user perspective). See recent forum discussion: Script variables and upvars: make 'm local
What I meant to say was in other iterative constructs, like REPEAT UNTIL (which is sometimes preferable over FOR), it often makes sense to use and update a "counter" variable.