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
};