总结:
1. 块级作用域 :let、const声明的变量,只在该代码块内有效;
2. 变量不会提升:let、const不存在变量提升,在未声明前使用变量,会报ReferError: x is not defined;
3. 暂时性死区:let、const声明的变量,存在暂时性死区,只要块级作用域内存在let、const命令,她内部的变量将不会受外界变量的影响;
4. 不允许重复声明:在同一个作用域内,不允许重复声明该变量;
5. const声明的变量不允许修改:并不是指变量的值不能改变,是指变量指向的内存地址不能改变。
6. 顶层对象和全局变量 :顶层对象在浏览器中指的是window对象,在ES5中,顶层对象和全局变量是等价的,即:
window.a = 1;
console.log(a); //1
var a = 2;
console.log(window.a, this.a); //2, 2
在ES6中 ,let和const声明的全局变量和顶层对象并不相等,如图:
var a = 1;
console.log(this.a); //1
let b = 2;
console.log(this.b); //undefined;
参考文章:http://es6.ruanyifeng.com/