編輯於2018年1月6日
一、let命令
1、let聲明的變量只在其所在代碼塊內有效;
2、let聲明的變量在聲明前使用會報錯ReferenceError;
3、暫時性死區;
4、let不允許在相同的作用域內重複聲明同一個變量。
二、塊級作用域
1、let外層代碼塊不受內層代碼塊的影響;
2、使用do表達式使塊級作用域中的值能夠返回。
三、const
1、const聲明一個只讀常量;
四、ES6中全局變量將逐步與頂層對象的屬性隔離
五、變量的解構賦值
1、解構不成功,變量的值就等於undefined;
2、解構賦值允許指定默認值;
3、解構也可用於對象;
4、字符串的解構賦值:const[a,b,c,d,e]="hello";
5、數值和布爾值也可使用解構賦值;
6、函數的參數也可以使用解構賦值,函數參數的解構也可以使用默認值;
7、建議在模式中不要放置圓括號;
8、用途:
a、變換變量的值;
b、從函數返回多個值;
c、函數參數的定義;
d、提取JSON數據;
e、函數參數的默認值;
f、遍歷Map解構。
四、字符串的擴展
1、字符的Unicode表示法:ES6中只要將碼點放入大括號,就能正確解讀該字符;
2、'abc'.at(0);//"a" '?'.at(0);//"?"
而ES5中'abc'.charAt(0);//"a" '?'.charAt(0);//"\uD842"
3、常見方法
a、includes()、startsWith()、endsWith()
b、repeat()
c、padStart()、padEnd()//ES2017引入了字符串補全長度功能,'x'.padStart(4,'ab');//'abax'
4、模板字符串。
七、函數的拓展
1、函數的默認值;
2、應用:
function throwIfMissing(){
throw new Error('Missing parameter');
}
function foo(mustBeProvided = throwIfMissing()){
return mustBeProvided;
}
foo;//Error:Missing parameter
3、ES6引入了reset參數(形式爲“...變量名”);
4、name屬性:ES6的name屬性會返回實際的函數名;
5、箭頭函數;
6、函數綁定運算符是並排的雙冒號(::),雙冒號左邊是一個對象,右邊是一個函數;
7、尾調用優化。
八、數組的拓展
1、擴展運算符(spread)是三個點(...),他如同reset參數的逆運算;
2、Arrayfrom():將兩類對象轉爲真正的數組:
a、類似數組的對象
b、可遍歷對象
3、Arrayof()方法用於將一組值轉換爲數組;
4、copyWithin();
5、find()和findIndex();
6、fill()方法使用給定值填充一個數組;
7、entries()、keys()、values();
8、includes()。
十二、Proxy
函數Proxy接受兩個參數,第一個參數是所要代理的目標對象,即如果沒有Proxy介入,操作原來要訪問的就是這個對象;第二個參數是一個配置對象,對於每一個被代理的操作,需要提供一個對應的處理函數,該函數將攔截對應的操作。
十四、Promise對象
1、兩個特點:
a、對象的狀態不受外界影響,三種狀態:Pending(進行中)、Fulfilled(已成功)、Rejected(已失敗);
b、一旦狀態改變就不會再變
2、Promise.prototype.then()
Promise.prototype.catch();
3、Promise.all()
Promise.race();
4、Promise.resolve()
Promise.reject();
5、done()
finally()。
十五、Iterator和for...of循環
1、集中遍歷:
a、for;
b、forEach;
c、for...in;
d、for...of。
十九、class的基本語法:ES6中的class可以看作只是一個語法糖。
二十一、修飾器
1、修飾器本質就是編譯時執行的函數;
2、修飾器只能用於類和類的方法。
二十二、Module的語法
1、ES6模塊不是對象,而是通過export命令顯式指定輸出的代碼,再通過import命令輸入;
2、ES6的模塊自動採用嚴格模式,不管有沒有在模塊頭部加上"use strict"。
二十四、編程風格
1、ESLint的使用(語法規則和代碼風格的檢查工具)。