ES6 - 函式與剩餘運算子

貓董發表於2018-12-18

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運算子/三個點

  1. 展開陣列:
    let a = ['apple','banana','orange'];
    console.log(...a); //apple, banana, orange
    複製程式碼
  2. 陣列引數展開:
    function show(a,b,c){
        //TODO
    }
    show(...[1,2,3]);
    複製程式碼
  3. 引數組成陣列:(ES6之前常用Array.prototype.slice.call(arguments)
    function show(...args){
        //TODO
    }
    show(1,2,3);
    複製程式碼
  4. 剩餘引數運算子:
    function show(a,b,...c){
        //TODO
    }
    show(1,2,3,4,5); //3,4,5會以陣列的形式傳入c中
    複製程式碼
  5. 陣列複製:
    let arr = [1,2,3];
    let arr2 = [...arr];
    let arr3 = Array.from(arr);
    複製程式碼

箭頭函式 =>

  • 左邊引數,右邊語句和返回值
    1. 最簡單的形式:let show = ()=>1; //返回1
    2. 帶引數的形式:let show = (a,b)=>a+b; //返回a+b的值
    3. 帶語句的形式:let show = (a,b)=>{//TODO};
  • 需要注意的問題:
    1. 解決了this指向的問題:箭頭函式中this指向定義時所在的物件,而不是執行時所在的物件;
    2. 箭頭函式中沒有arguments;可以用...args來解決;
    3. 箭頭函式不能用於建構函式;

相關文章