43 lines
859 B
JavaScript
43 lines
859 B
JavaScript
function destructObject() {
|
|
var a, b, c, d;
|
|
({a, x: b, y: {c, z: [,d]}} = {
|
|
a: 7, // field with shorthand a => a: a syntax
|
|
x: 8, // typical syntax
|
|
y: { // nested object destructuring
|
|
// missing binding 'c'
|
|
z: [10, 11, 12] // nested array destructuring
|
|
}
|
|
});
|
|
return {
|
|
a: a,
|
|
b: b,
|
|
c: c,
|
|
d: d
|
|
};
|
|
}
|
|
|
|
// ----------------------------------------------------------------------------
|
|
|
|
var result = destructObject();
|
|
assert.equal(7, result.a);
|
|
assert.equal(8, result.b);
|
|
assert.isUndefined(result.c);
|
|
assert.equal(11, result.d);
|
|
|
|
var {0: x, '1': y, length: z} = [0, 1, 2, 3];
|
|
assert.equal(0, x);
|
|
assert.equal(1, y);
|
|
assert.equal(4, z);
|
|
|
|
var {x: y,} = {x: 5};
|
|
assert.equal(5, y);
|
|
|
|
var x;
|
|
({x = 6} = {});
|
|
assert.equal(x, 6);
|
|
|
|
var z;
|
|
({x: {y = 7}, z = 8} = {x: {}});
|
|
assert.equal(y, 7);
|
|
assert.equal(z, 8);
|