Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] Qual a diferença?

Bom dia pessoal!

Estava fazendo o exercício proposto pelo instrutor, usando o método find(), como ele fez, porém, não entendi qual a diferença de usar ou não {} na arrow function, pois com as chaves, o retorno é undefined e sem as chaves, o retorno é o objeto desejado.

Alguém sabe me dizer se eu sou obrigado a não usar chaves quando eu faço só uma linha de código na arrow function?

Retorno OKAY

const clientes = require("./clientes.json");

function encontrar(lista, chave, valor){
    return lista.find((item) => item[chave] === valor);
}

const encontrado = encontrar(clientes, "nome", "Kirby");

console.log(encontrado);

Retorno undefined

const clientes = require("./clientes.json");

function encontrar(lista, chave, valor){
    return lista.find((item) => {
        item[chave] === valor
    })
}

const encontrado = encontrar(clientes, "nome", "Kirby");

console.log(encontrado);
1 resposta
solução!

Oi Victor, tudo bem?

A diferença entre usar ou não as chaves {} na arrow function está relacionada ao retorno da função. Quando você usa as chaves, é necessário explicitar o retorno utilizando a palavra-chave return. Porém, quando você não utiliza as chaves, o retorno é implícito, ou seja, o valor da expressão é retornado automaticamente.

No seu exemplo, quando você utiliza as chaves na arrow function, o retorno é undefined porque você não está retornando o resultado da comparação. Você pode corrigir isso adicionando a palavra-chave return antes da expressão:

function encontrar(lista, chave, valor){
    return lista.find((item) => {
        return item[chave] === valor;
    });
}

Por outro lado, quando você não utiliza as chaves, o retorno é o objeto desejado porque a expressão item[chave] === valor é avaliada e seu valor é retornado automaticamente.

function encontrar(lista, chave, valor){
    return lista.find((item) => item[chave] === valor);
}

Portanto, você não é obrigado a não usar chaves quando você faz apenas uma linha de código na arrow function. A escolha entre utilizar ou não as chaves depende do seu objetivo e da legibilidade do código.

Um abraço e bons estudos.