//结构解析 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 }){ }