1. 程式人生 > >es6 入坑筆記(二)---函式擴充套件,箭頭函式,擴充套件運算子...

es6 入坑筆記(二)---函式擴充套件,箭頭函式,擴充套件運算子...

函式擴充套件

1.函式可以有預設值 function demo( a = 10,b ){}

2.函式可以使用解構 

function demo( { a = 0,b = 0 } = {} ){

}

3.函式引數最後可以多一個逗號

function demo(a,b,c,){

}

1.與for等父子域不同

function(a){

  let a=10;

}

會報錯,因為a已經被定義

2.

function move({x, y} = { x: 0, y: 0 })

{ return [x, y]; }

move({x: 3, y: 8});// [3, 8]

move({x: 3}); // [3, undefined]

move({}); // [undefined, undefined]

move(); // [0, 0]

undefined才會觸發函式引數的預設

 

 

 

箭頭函式

簡略形式:(引數)=>(return 的資料)

完整形式:

(引數)=>{

  語句

  return資料

}

作用:解決了this物件,當前this指向最頂層的申明物件

eg:

let json = {

  name:"zjj",

  demo:function(){

    setTimeout(()=>{

      alert(this.name);//這裡的this不再是當前的執行時物件,而是最頂層的json

    }),200

  }

}

1.箭頭函式裡沒有arguments轉用...

//錯誤程式碼

let show = function(){

  alert(arguments);

}

//正確程式碼

let show = function(...args){

  alert(args);

}

2.箭頭函式不能作為建構函式

 

 

 

擴充套件運算子

1....

1.雜湊的資料變成陣列

demo(1,2,3,4);

function(a,b,...c){

  //a = 1;b = 2 , c = [3,4];

}

2.陣列變成雜湊的資料

let arr1 = [1,2,3];//將arr1複製給另一個數組

let arr2 = [...arr1];

坑:必須放在最後

 

2**3=8;