解构赋值

//结构解析
var [a,b,c] = [1,2,3]

let [foo,[[bar],baz]] = ['foo',[['bar'],'baz']]

let [x,,y] = [1,,3]

let [head, ...tail] = [1,2,3,4,5]

let [m,n, ...z] = [1]

var [foo2] = []

var [bar2,foo2] = [1]

let [u,f] = [1,2,3,4]

let [x1,[y1],z1] = [1,[2,3],4]

//must be Array if is not Array it`s transform to iterator 
let [foo3] = 1;
let [foo4] = false;
let [foo5] = NaN;
let [foo6] = undefined;
let [foo7] = null;
let [foo8] = {};

/* Generator
var [aa1,aa2,aa3,aa4,aa5,aa6] = fibs();
function* fibs(){
  var a = 0;
  var b = 1;
  while(true){
    yield a;
    [a,b] = [b, a+b]
  }
}
*/

默认值

var [a = true] = []
var [a, b = 2,c] = [1]
var [x=1] = [undefined]
var [x=1] = [null]

function f(){
  conosole.log('aaaaa');
}

var [x = f] = [1]

var [x = 1, y = x] = []
var [x = 1, y = x] = [2]
var [x = 1, y = x] = [2,3]
var [x = y, y = 1] = []

 对象解析

var {foo,bar} = {foo: 'a', bar:'b'}
var {baz} = {a:'a',b:'b'}

var {foo:baz} = {foo:'aaa',bar:'bbb'}

var o = {a:'a',b:'b'}
var {a,b} = o
var {a:x,b:y} = o

let foo2;
({foo2} = {foo2: 'aaa'})

var obj = {
  p: ['hello',{y:'word'}]
}

var {p:[x,{y}]} = obj

var node = {
  a:{
    b:{
      c: 1,
      d: 2
    }
  }
}

var {a:{b:{c}}} = node;

var obj = {};
var arr = [];
({foo3: obj.prop, bar3: arr[0]} = {foo3: 123, bar3: true});

var {x=3} = {}
var {x,y = 5} = {x: 1}

var {message: msg = "aaaaaaaa"} = {}

var {x1 = 3} = {x1: undefined}

var {x1 = 3} = {x1: null}

var {as} = {bar: 'aaa'}

var {foo: {bar}} = {bar: 'baz'}

 字符串 数值和布尔 函数参数的 结构解析

var [a,b,c,d,e] = 'gunduzi'
let {toString: s} = 123

let {toString: bl} = true

//let {prop: x} = undefined
//let {prop: x} = null

function add([x,y]){
  console.log(x + y);
  return x+ y;
}

add([1,2]);

[[1,2],[3,4]].map(([a,b]) => a+b);

[1,2,3,4].map((a)=>a*a)

function move({x=3,y=4} = {}){
  return [x,y]
}

function move2({x,y} = {x:0,y:0}){
  return [x,y]
}

move2({x:1,y:1});
move2({x1});
move2({});
move2()

[0,1,undefined,2].map((x = 'yes') => x);

 用途

[x,y] = [y,x]

function getArr(){
  return [1,2,3]
}

var [a,b,c] = getArr();

function getObj(){
  return {
    foo: 'aaaa',
    bar: 'bbbb'
  }
}

var {foo,bar} = getObj();

function f([a,b,c]){}
f([1,2,3])
function f2({a,b,c}){}
f2(a:1,c:2,b:3)

var json = {
  aa:'aa',
  bb:'bb',
  arr: [1,2,3,4],
  obj: {mm:'mm'}
}

var {aa,bb,arr:arr2,obj:obj2} = json;

var ajax = function(url , {
  async = true,
  beforsend = function(){},
  cache= true,
  complete = function(){},
  crossDomain = false,
  global = true
}){
  
}
原文地址:https://www.cnblogs.com/xudy/p/6698090.html