## With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

No credit card required

# Destructuring Assignment

Spidermonkey 1.7 implements a kind of compound assignment known as destructuring assignment. (You may have seen destructuring assignment before, in Python or Ruby, for example.) In a destructuring assignment, the value on the right-hand side of the equals sign is an array or object (a “structured” value) and the left-hand side specifies one or more variable names using a syntax that mimics array and object literal syntax. When a destructuring assignment occurs, one or more values are extracted (“destructured”) from the value on the right and stored into the variables named on the left. In addition to its use with the regular assignment operator, destructuring assignment can also be used when initializing newly declared variables with `var` and `let`.

Destructuring assignment is simple and powerful when working with arrays, and is particularly useful with functions that return arrays of values. It can become confusing and complex when used with objects and nested objects, however. Examples demonstrating both simple and complex uses follow.

Here are simple destructuring assignments using arrays of values:

````let` `[``x``,``y``]` `=` `[``1``,``2``];`    `// Same as let x=1, y=2`
`[``x``,``y``]` `=` `[``x``+``1``,``y``+``1``];`    `// Same as x = x + 1, y = y+1`
`[``x``,``y``]` `=` `[``y``,``x``];`        `// Swap the value of the two variables`
`console``.``log``([``x``,``y``]);`   `// Prints [3,2]`
```

Notice how destructuring assignment makes it easy to work with functions that return arrays of values:

````// Convert [x,y] coordinates to [r,theta] polar coordinates`
`function` `polar``(``x``,``y````

## With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

No credit card required