I think the confusion resulted from this statement.
What's declared in that block? Something is declared for the block rather than in it.
I have no problem remembering the behavoir now that I'm aware of it, my issue is that I've never read anything that would indicate it would work that way. Everything I've read says "Dynamic scoping" which is often used interchangably with local().
Elian has a good explanation of what's going on under the magic carpet
here
-Lee
"To be civilized is to deny one's nature."