La desestructuración en JavaScript es una característica introducida en ES6 que permite desempaquetar valores de arreglos o propiedades de objetos para usarlos en variables individuales. Esto puede hacer que el código sea más limpio y legible.
Hay dos tipos de desestructuración: de arreglos y de objetos.
Desestructuración de arreglos:
```
let array = [1, 2, 3];
let [a, b, c] = array;
console.log(a, b, c); // Outputs: 1 2 3
```
Desestructuración de objetos:
```
let object = {x: 1, y: 2, z: 3};
let {x, y, z} = object;
console.log(x, y, z); // Outputs: 1 2 3
```
También puedes desestructurar durante la iteración:
```
for (let {a: x, b: y} of [{a: 1, b: 2}, {a: 3, b: 4}]) {
console.log(x, y); // Outputs: 1 2, 3 4
}
```
Es importante recordar que la desestructuración es sólo una sintaxis de asignación. Los valores originales en el arreglo u objeto no se modifican.