no, that's not true.
for globals, you can split hairs using simple window.hasOwnProperty("x") syntax.
function are more complicated.
consider a simple function:
var b, c;
it sounds like you might be tempted to think that b and c are redundant, but they are not.
by declaring them locally, they block out the named-identifiers "b" and "c" from globals and/or wrapping function contexts.
while c isnt't used in the two-line function above, the principle of reserving lexical scope entities to the most local level still applies.
in short, it's all about privacy.
you are correct that undefined===undefined