Variable Destructuring

Definition: Allows you to extract values from objects in an array according to a certain pattern.

Array destructuring assignment

var [foo, bar] = [1, 2] // foo 1 bar 2

Destructuring assignment allows you to specify a default value. If the default value is an expression, the expression is evaluated lazily.

var [foo = true] = [] //foo true var f = () => 1 var [foo = f()] = [null] //foo null var [foo = f()] = [undefined] //foo 1

Object Destructuring

The difference between object structure assignment and array is that the variable must have the same name as the attribute

var {bar,foo} = {foo:"aaa",bar:"bbb"}
//or
({bar,foo}) = {foo:"aaa",bar:"bbb"}

Tips: (…) is a syntax that does not require declaration when using object literal destructuring assignment. However, the preceding statement needs a semicolon to avoid being treated as a function.

Object destructuring allows you to easily assign existing object methods to a variable.

let {log, sin, cos} = Math

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

Destructuring of function parameters can also use default values

function move({x=0,y=0}={}){ return [x,y] }; move({x:3,y:8}) //[3,8]

If you remove the ={}, you will get an error when executing move().

Uses of destructuring assignment

Returning multiple values from a function

function foo() { return [1, 2, 3] } var [a, b, c] = foo()

Function parameter definition

function f({x,y,z}){}
f({z:3,x:1,y:2})

Extract json

var json = { id:42, status:“ok”, data:[1,2,3,4,] } let {id,status,data} = json

Traversing the map deconstruction

for(let [key,value] of map){}; Get the key

for(let [key] of map){}; Just want to get the value

for(let [,value] of map){}; Input module specification method