为了能够快速了解,就不进行长篇大论了。
变量提升针对的是使用var声明的变量和使用function进行声明,这两个声明的方式都存在变量提升,通俗的说变量提升就是可以在声明之前对其进行访问,更需要注意的是只是声明的被提升了,如果是声明和初始化(赋值),赋值这一步是没有执行的。
暂时性死区,是ES6中使用let和const进行声明的变量而出现的,let,const 能够使得JS拥有块级作用域的效果。通过let,const声明的变量不会出现变量提升,而同时会出现暂时性死区,通俗的说,暂时性死区就是说通过let和const声明,在这个作用域内,在这个变量声明之前使用这个变量就会报错
//变量提升
function fun1() {
console.log(num)//存在变量提升可以在声明之前访问,结果是undefined不会报错
var num = 1024
}
//暂时性死区
function fun2() {
console.log(num)//在暂时性死区使用声明的的变量会报错
let num = 1024
}
fun1()
fun2()
运行结果: