Any variable defined in a function (or block) with the same name as a global variable takes precedence over the global variable, shadowing it.
This prints undefined
:
var name = 'Roger'
function run() {
console.log(name)
var name = 'Flavio'
}
run()
and this raises an error ReferenceError: name is not defined
:
let name = 'Roger'
function run() {
console.log(name)
let name = 'Flavio'
}
run()
Lessons this unit:
0: | Introduction |
1: | Global scope |
2: | Function scope |
3: | Block scope |
4: | ▶︎ Shadowing |
5: | Hoisting |
6: | Closures |
7: | An issue with `var` variables and loops |
8: | The event loop |