var [a,b,c] = [4,5,6];
、let [foo,[xxx,yyy]]=[45,[12,46]];
,只须要等号两边的模式相同,变量就会被赋予对应的值。undefined
。let [x,y] = [1,2,6];
或者 let [x,y,z] = [4,[4,9,3],8,9];
。Iterator接口
均可以以数组的形式进行解构赋值。例如let [x,y,z] = new Set ([4,5,6]);
,以及ES 6 中的generator
函数,也能够做为解构表达式的赋值内容。let [foo = true,ofo = false ,mobike = "fake"] = [456,undefined,null];
只有当一个数组成员被赋予的值全等于undefined
,默认值才会生效。(注:这里的null并不全等于undefined,因此mobike的值为null)。let [foo = fun()] = ["Crazy-Web-2"];
这里的fun()方法将不被触发。let [x=y,y=1]=[];
,给x赋默认值的时候,仍未被声明。var {foo: baz } = { foo:"aaa",bar :"bbb"};
,被赋值的是变量baz
而不是键名foo
undefined
({x} = { x : x:1});
,须要十分注意,要使用圆括号括起来。let { log, sin, cos } = Math;
,可以,直接使用log()
、sin()
、cos()
便可。length
属性,字符串对象也不列外。function move({x = 0, y = 0} = {}) {
return [x, y];
}
function move({x, y} = { x: 0, y: 0 }) {
return [x, y];
}
undefined
时,解构默认值会被触发,而函数参数默认值不会。// 报错
({ p: a }) = { p: 42 };
([a]) = [5];
[({ p: a }), { x: c }] = [{}, {}];
let x = 1;
let y = 2;
[x, y] = [y, x];
return [1, 2, 3];
或return { foo: 1, bar: 2 };
,return获得的函数值,能够直接赋值给解构相相似的对象。function f({x, y, z}) { ... }; f({z: 3, y: 2, x: 1});
let x = 1;
jQuery.ajax = function (url, {
async = true,
beforeSend = function () {},
cache = true,
complete = function () {},
crossDomain = false,
global = true,
// ... more config
}) {
// ... do stuff
};