Get to know MDN better
Esta página foi traduzida do inglês pela comunidade. Saiba mais e junte-se à comunidade MDN Web Docs.
This feature is well established and works across many devices and browser versions. It’s been available across browsers since agosto de 2016.
A sintaxe de atribuição via desestruturação (destructuring assignment) é uma expressão JavaScript que possibilita extrair dados de arrays ou objetos em variáveis distintas.
As expressões de objeto e matriz literais fornecem uma maneira fácil de criar pacotes ad hoc de dados .
A atribuição via desestruturação usa sintaxe similar, mas no lado esquerdo da atribuição são definidos quais elementos devem ser extraídos da variável de origem.
Esse recurso é semelhante aos recursos presentes em linguagens como Perl e Python.
Uma variável pode ter seu valor atribuído via desestruturação separadamente da declaração dela.
Uma variável pode ser atribuída de um padrão, no caso em que o valor retirado do array é undefined.
Os valores de duas variáveis podem ser trocados em uma expressão de desestruturação.
Sem atribuição via desestruturação, trocar dois valores requer uma variável temporária (ou, em algumas linguagens de baixo nível, o Algoritmo XOR Swap).
Sempre foi possível retornar uma matriz de uma função. A desestruturação pode tornar mais conciso o trabalho com um valor de retorno do tipo array.
Neste exemplo, f() retorna os valores [1, 2] como saída, que podem ser analisados em uma única linha com desestruturação.
Você pode ignorar valores retornados que você não tem interesse:
Você também pode ignorar todos os valores retornados:
Ao desestruturar um array, você pode atribuir a parte restante deste em uma viáriável usando o padrão rest:
Quando o método de expressão regular exec() encontra um resultado, ele retorna um array que contém primeiro toda a porção resultante da string e depois cada uma das porções da string resultante envolvidas por parênteses na expressão regular. A atribuição via desestruturação lhe permite extrair as partes desses array facilmente, ignorando a porção resultante completa se não precisar.
Uma variável pode ter seu valor atribuído via desestruturação separadamente da sua declaração.
Nota: Os parênteses ( ... ) ao redor da declaração de atribuição é uma sintaxe necessária quando se utiliza a atribuição via desestruturação de objeto literal sem uma declaração.
{a, b} = {a:1, b:2} não é uma sintaxe stand-alone válida, pois {a, b} no lado esquerdo é considarada um bloco, não um objeto literal.
No entanto, ({a, b} = {a:1, b:2}) é valida, assim como var {a, b} = {a:1, b:2}
Uma variável pode ser extraída de um objeto e atribuída a uma variável com um nome diferente da propriedade do objeto.
Uma variável pode ser atribuída de um padrão, no caso em que o valor retirado do objeto é undefined.
Isso extrai o id, displayName e firstName do objeto user e os imprime na tela.
Nomes computados de propriedades, como em objetos literais, podem ser usados com desestruturação.
| ECMAScript® 2027 Language Specification # sec-destructuring-assignment |
| ECMAScript® 2027 Language Specification # sec-destructuring-binding-patterns |
Enable JavaScript to view this browser compatibility table.
This page was last modified on 16 de mar. de 2025 by MDN contributors.
Your blueprint for a better internet.
Visit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.
Portions of this content are ©1998–2026 by individual mozilla.org contributors. Content available under a Creative Commons license.