不存在变量提升
必须在声明后使用
a; // a is not defined
let a;
块级作用域
{}中的区域
暂时性死区
定义:es6明确规定,如果区块中存在let或const命令,则这个区块对这些命令声明的变量从一开始就形成封闭的作用域。只要在声明前使用这些变量就会报错。
var a = 555;
// 报错
function () {
a = 666;
let a = 777
}
不允许重复声明
// 报错
var a = 555;
let a = 444;
// 报错
let a = 555
let a = 444
// 报错
function (val) {
let val = 555
}
const声明后必须立即初始化
定义:const一旦声明常量,必须立即初始化,以后不能重新赋值。(对象内容可以改变)
const a; // 报错
const a = 555;
a = 5555; //报错