Skip to main content

🛸 Shadowing

Useful resources:

What is shadowing ?

When you have two or more variables, each in different scope, with the same lexical names.

The city variable (parameter) at line 3 shadows the variable city at line 1. That's why re-assignment of city at line 4 only affects the inner variable, not the outer one.

Illegal Shadowing

Not all combinations of declaration shadowing are allowed. let can shadow var, but var cannot shadow let

1: [SyntaxError: Identifier 'city' has already been declared]

var at line 4 is trying to 'cross the boundary' of let declaration.

valid. if there is a function boundary in between
1: 7 2: 1