Retornando vários valores de uma função

Resumo : neste tutorial, você aprenderá a definir funções JavaScript que retornam vários valores.

As funções JavaScript podem retornar um único valor. Para retornar vários valores de uma função, você pode compactar os valores retornados como elementos de um array ou como propriedades de um objeto .

Retornando vários valores de uma função usando um array

Suponha que a getNames()função a seguir recupere o nome e o sobrenome de um banco de dados no back-end ou do resultado de uma chamada de API de terceiros e os retorne como elementos de um array:

function getNames() {
    // get names from the database or API
    let firstName = 'John',
        lastName = 'Doe';

    // return as an array
    return [firstName, lastName];
}Linguagem de código:  JavaScript  ( javascript )

O seguinte mostra como obter o valor de retorno da getNames()função:

let names = getNames();Linguagem de código:  JavaScript  ( javascript )

Como a namesvariável é um array, você pode referenciar seus elementos usando colchetes, assim:

const firstName = names[0],
      lastName  = names[1];Linguagem de código:  JavaScript  ( javascript )

No ES6, você pode usar a sintaxe de desestruturação de atribuição para descompactar valores de um array de forma mais intuitiva, assim:

const [firstName, lastName] = getNames();Linguagem de código:  JavaScript  ( javascript )

Neste código, as variáveis firstName​​e lastNameocuparão o primeiro e o segundo elementos da matriz de retorno.

Retornando vários valores de uma função usando um objeto

Se quiser atribuir um nome a cada valor retornado para torná-lo mais legível e fácil de manter, você pode usar um objeto :

function getNames() {
  // get names from the database or API
  let firstName = 'John',
      lastName = 'Doe';

  // return values
  return {
    'firstName': firstName,
    'lastName': lastName
  };
}Linguagem de código:  JavaScript  ( javascript )

Como os nomes das propriedades são iguais aos das variáveis, você pode encurtá-los usando as extensões de sintaxe literal do objeto no ES6 da seguinte maneira:

function getNames() {
  // get names from the database or API
  let firstName = 'John',
      lastName  = 'Doe';

  return { firstName, lastName };
}
Linguagem de código:  JavaScript  ( javascript )

E você pode obter o valor de retorno como um objeto como este:

let names = getNames();

let firstName = names.firstName,
    lastName  = names.lastName;Linguagem de código:  JavaScript  ( javascript )

Se quiser descompactar propriedades de um objeto, você pode usar a sintaxe de desestruturação de objetos da seguinte maneira:

let { firstName, lastName } = getNames();Linguagem de código:  JavaScript  ( javascript )

Resumo

  • JavaScript não oferece suporte a funções que retornam vários valores. No entanto, você pode agrupar vários valores em uma matriz ou objeto e retornar a matriz ou o objeto.
  • Use a sintaxe de atribuição de desestruturação para descompactar valores da matriz ou propriedades de objetos.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *