It is easy to confuse automatics used inside a function or compound statement block with the same named variables used outside that function or block. If the declaration made locally is changed, the global definition may mask the fact that the name is being used by mistake.
A new copy, with its value initially undefined, is made for each new call.