let 和 const 命令
let
- 不存在变量的提升
- let 声明的变量只有在当前块级作用域内有效
- let 不允许在相同作用域内,重复声明同一个变量
- let 和 const 声明的变量,不能被重新声明
- TDZ:暂时性死区--(使用 let 命令在声明变量之前,该变量都是不可用的,会报错)
- 不能在函数内部重复声明同一个参数,因为参数变量是默认声明的,所以不能用 let 或 const 再次声明;
if (true) {
// TDZ开始
tmp = "abc" // ReferenceError
console.log(tmp) // ReferenceError
let tmp // TDZ结束
console.log(tmp) // undefined
tmp = 123
console.log(tmp) // 123
}
大约 56 分钟