1. 程式人生 > >ES6中的解構(二)

ES6中的解構(二)

物件解構

let {name:a,age:b} = {age:20,name:'abc'};  //a
let {name,age} = {age:20,name:'abc'};  //name
let {abc:name,age:age} = {age:20,name:'abc'};   //錯誤  name為變數, abc是物件中匹配的值

物件解構可以設定預設值

let {x=3} ={x:5};
        x;  //5
let {x=3} ={};
        x;  //3
let {x=3} ={x:undefined};
        x;  //3
let {x=3} ={x:null};
        x;  // null
let {x,y=3} ={x:5};
        //x 5 y  3
let {x:y=10} ={x:5};  //x匹配模式   Y變數
        //y 5
let {x:y=10} ={};
        //y 10
let {x:y=10} ={y:5};  //10
let {x} ={y:5};   //undefined

字串解構

var [a,b,c] = 'hello';  // a = 'h',b = 'e',c = 'l';

函式引數的解構賦值

 function fun([a,b]){
         return a+b;
  };
 fun([2,5]);  //7
  //預設值
 function fun([a=0,b=0]){
            return a+b;
 };
 fun([]);  //0
 function fun([a=0,b=0]){
         return a+b;
 };
 fun([3]);  //3

JSON解構

        let data ={
            name:'abc',
            age:18,
            friends:['x','y','z'],
            obj:{a:'a',b:'b'}
        };
        let {name,age:a=20,friends,obj} = data;
          //a =18   obj.a   friends[1]