- var 可声明前置
a = 3
var a
var a = 4
- let不可声明前置
a = 3 //报错
let a
- let不可重复声明
let a = 3
let a = 4 //报错
var a = 5 //报错
- 存在块级作用域
for(let i =0; i<3; i++){
console.log(i)
}
console.log(i) //报错
IIFE的替换
(function(){
var a = 1
}())
{let a = 1}
暂时性死区(TDZ):在let声明变量之前都是该变量的死区,在死区内该变量不可使用
- const 声明的常量不可改变
const a = 1
a = 2 //报错
const obj = {a: 1}
obj.a = 2 //没问题
obj = {a: 2} //报错
- 适用于let的同样适用于const