首先javascript與ECMAscript的關(guān)系是:前者是后者的規(guī)格(標準),后者是前者的一種實現(xiàn)(另外的ECMAScript方言還有Jscript和ActionScript)。平常所說的JavaScript實現(xiàn)是由ECMAScript和BOM ,DOM組成的。在日常場合,這兩個詞是可以互換的。
到這里,我們就知道為什么要學(xué)ES6 (ES2015)啦~關(guān)于ES6最常用的特性:
- let,
- const,
- class,
- extends,
- super,
- arrow functions,
- template string,
- destructuring,
- default,
- rest arguments
共計10個
唔~偷個懶(先掌握前兩個……)
let,const用法(聲明變量)
舉個栗子:
var name = 'zach'
while (true) {
var name = 'obama'
console.log(name) //obama
break
}
console.log(name) //obama
上述結(jié)果,內(nèi)層變量覆蓋外層變量,是因為在ES5中只有全局作用域和函數(shù)作用域,沒有塊級作用域。
在ES6中,let為javascript新增了塊級作用域,用它聲明的變量只有在let命令所在的代碼塊才生效。
let name = 'zach'
while (true) {
let name = 'obama'
console.log(name) //obama
break
}
console.log(name) //zach
除此之外,var帶來的不便還有循環(huán)計數(shù)的變量泄露為全局變量,如:
var a = [];
for (var i = 0; i < 10; i++) {
a[i] = function () {
console.log(i);
};
}
a[6](); // 10
對比之下
var a = [];
for (let i = 0; i < 10; i++) {
a[i] = function () {
console.log(i);
};
}
a[6](); // 6
其實有個疑問,關(guān)于如下兩個例子:

圖片.png

圖片.png
這結(jié)果真是出乎我的意料啊,我本以為用let來定義,此時會輸出undefinded呢~~~~~~~~~~唔~~~~~~~~