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 in 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 |