總結:
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/