function showSinger() {
console.log(‘showSinger 函数’)
}
// var 变量被提升了
var singer = undefined
showSinger()
console.log(‘第 1 次打印:’, singer) // undefined
singer = ‘Jaychou’
console.log(‘第 2 次打印:’, singer) // Jaychou
在 JavaScript 里,这种现象被称为 hoisting 提升:var 声明的变量会提升和函数声明会
提升,在执行代码之前会先被添加到执行上下文的顶部。
关于提升的细节
let 变量和 const 变量不会被提升,只能在声明变量之后才能使用,声明之前被称为“暂
时性死区”,以下代码会报错:
console.log(‘打印:’, singer)
let singer = ‘Jaychou’
2. 在全局执行上下文声明的 var 变量会成为 window 对象的属性,let 变量和 const 变
量不会
var singer = ‘Jaychou’
console.log(window.singer) // Jaychou
let age = 40
console.log(window.age) // undefined
var 声明是函数作用域,let 声明和 const 声明是块作用域