Bom, os dois códigos não são equivalentes.
O primeiro cria um objeto cujos valores são aqueles que foram passados como argumentos da função:
function comprar(nomeDoProduto,preçoDoProduto){
const produto = {
nomeDoProduto,
preçoDoProduto
}
return produto
}
console.log(comprar(`Notebook`,2999)); // { nomeDoProduto: 'Notebook', 'preçoDoProduto': 2999 }
console.log(comprar('paçoca', 1.25)); // { nomeDoProduto: 'paçoca', 'preçoDoProduto': 1.25 }
Já o segundo código ignora os argumentos e sempre retorna o mesmo objeto:
function objetoComParametro(usuario){
usuario.nome
usuario.email
return dadosDoUsuario
}
const dadosDoUsuario = {
nome: `Higor`,
email: `[email protected]`
}
console.log(objetoComParametro(dadosDoUsuario)); // { nome: 'Higor', email: '[email protected]' }
// a função ignora os parâmetros e sempre retorna o mesmo objeto
console.log(objetoComParametro({ qualquerCoisa: 'abc', xyz: 123 })); // { nome: 'Higor', email: '[email protected]' }
console.log(objetoComParametro(1234567890)); // { nome: 'Higor', email: '[email protected]' }
Isso porque ela retorna sempre o objeto dadosDoUsuario
, que foi criado fora da função. Qualquer coisa passada para a função é ignorada. Aliás, as duas linhas usuario.nome
e usuario.email
são inúteis, elas estão somente tentando acessar as propriedades nome
e email
, mas não fazem nada com elas. Se remover essas duas linhas, a função continua funcionando do mesmo jeito. Não sei qual era a intenção desta função, mas enfim...
Talvez o que dê para otimizar na primeira função é eliminar a variável e retornar direto:
function comprar(nomeDoProduto, preçoDoProduto) {
return { nomeDoProduto, preçoDoProduto };
}
Ainda sim, o mais provável é que o ganho seja irrisório.
Sobre a pergunta do título, cada caso é um caso. Mas em geral, primeiro vc se preocupa com código claro, que seja fácil entender e manter (não só pra vc, mas pra qualquer outra pessoa que vá mexer futuramente - incluindo o seu "futuro eu", que daqui a um mês pode não lembrar o que era aquele código).
Depois, para otimizar, tem que ver se de fato há algum problema de desempenho. Mas pra isso tem que fazer testes pra saber onde estão os gargalos.
Dito isso, os exemplos que vc deu são simples demais para se preocupar com otimizações.