var const let 的比较
var: 带有变量提升,可在变量声明前使用,但是使用的时候值为undefinedlet: 声明块级作用域的可变变量const: 声明会计作用域的常量
暂时性死区
当块级作用域下存在let声明的变量与var声明的变量同名,块级作用域中的改变量使用的是或let声明的变量,同时,在声明该变量之前,块级作用域内改变量都是不可用的。
使用或let声明变量时,只要变量在还没有声明完成前使用,就会报错
var tmp = 123
{
console.log(tmp) // 会报错
// 在let tmp声明之前使用tmp的话会报错
let tmp = 456
console.log(tmp) // 456
}