ES6 支援引數預設值
- 之前通常用
||
運算子設定預設引數:b = b || 預設值;
- ES6 可以直接設定函式引數預設值:
function show(a=2,b=3){ //TODO } 複製程式碼
function show({a=2,b=3}={}){ //TODO } 複製程式碼
- 函式的引數在函式體內重新定義會報錯;因為引數已經被定義了
function (a = 12) { let a = 8; //報錯,重複定義 } 複製程式碼
擴充套件運算子/rest運算子/三個點
- 展開陣列:
let a = ['apple','banana','orange']; console.log(...a); //apple, banana, orange 複製程式碼
- 陣列引數展開:
function show(a,b,c){ //TODO } show(...[1,2,3]); 複製程式碼
- 引數組成陣列:(ES6之前常用
Array.prototype.slice.call(arguments)
function show(...args){ //TODO } show(1,2,3); 複製程式碼
- 剩餘引數運算子:
function show(a,b,...c){ //TODO } show(1,2,3,4,5); //3,4,5會以陣列的形式傳入c中 複製程式碼
- 陣列複製:
let arr = [1,2,3]; let arr2 = [...arr]; let arr3 = Array.from(arr); 複製程式碼
箭頭函式 =>
- 左邊引數,右邊語句和返回值
- 最簡單的形式:
let show = ()=>1; //返回1
- 帶引數的形式:
let show = (a,b)=>a+b; //返回a+b的值
- 帶語句的形式:
let show = (a,b)=>{//TODO};
- 最簡單的形式:
- 需要注意的問題:
- 解決了this指向的問題:箭頭函式中this指向定義時所在的物件,而不是執行時所在的物件;
- 箭頭函式中沒有
arguments
;可以用...args
來解決; - 箭頭函式不能用於建構函式;