变量声明提升
JavaScript 中,函数及变量的声明都将被提升到函数的最顶部,且赋值会被留在原地,这个过程称之为提升。
函数提升
say() //输出:'saying'
function say() {
console.log('saying')
}
变量提升
var name = 'ryan'
function say() {
var name //变量name声明提升至作用域顶部,但未赋值,故为undefined
console.log(name) //存在局部name,则无视全局name
name = 'zoe' //变量赋值保持原位
console.log(name) //输出:'zoe'
}
say()
let 与 var 的区别?(4)
- let 不存在变量提升现象,而 var 存在变量提升
- let 声明的变量在块级作用域内,var 声明的变量只能是全局或者整个函数块的
- let 不可以重复声明,而 var 可以重复声明
- 暂时性死区 创建、初始化、赋值,var 是创建后立即初始化为 undefined,let 是创建后等赋值时初始化,未初始化就使用就会报错