1.新增let和const命令
1.1 let命令:
ES6 新增了let命令,用来声明变量。它的用法类似于var,**但是所声明的变量,只在let命令所在的代码块内有效。**let命令中不存在变量提升,let命令改变了语法行为,它所声明的变量一定要在声明后使用,否则报错。
1.2 const命令:
const声明一个只读的常量。一旦声明,常量的值就不能改变。const声明的常量,也与let一样不可重复声明。一旦声明变量,就必须立即初始化,不能留到以后赋值。
2.暂时性死区:
if(condition){
console.log(typeof value);//引用错误
let value="blue";
}
只要块级作用域内存在let命令,它所声明的变量就“绑定”(binding)这个区域,不再受外部的影响。
**ES6明确规定,如果区块中存在let和const命令,这个区块对这些命令声明的变量,从一开始就形成了封闭作用域。**凡是在声明之前就使用这些变量,就会报错。这样的设计是为了让大家养成良好的编程习惯,变量一定要在声明之后使用,否则就报错。该名称并未在 ECMAScript 规范中被明确命名,但经常被用于描述 let 或 const 声明的变量为何在声明处之前无法被访问。尽管这里使用的都是 let ,但替换为const 也会有相同情况。
3.不允许重复声明
let不允许在相同作用域内,重复声明同一个变量。同样,const也是如此。