¿Cuál es la diferencia entre {} y ( ) en la declaración de devolución de JavaScript?
const fruits = [ { name: "FaceBook", nickname: "FB", }, { name: "Youtube", nickname: "YT", }, { name: "AmazonWebService", nickname: "AWS", }, ]; const count = fruits.reduce((acc, cur) => { return { ...acc, [cur.nickname]: cur.name }; // What does {} of return mean here? }, {});Dado que return no es una function , sino una statement , es sintácticamente similar a otras declaraciones de flujo de control simples como break y continue que tampoco usan paréntesis .
Entonces, los paréntesis a return son como paréntesis en cualquier otro lugar, es para el orden de los cálculos o simplemente para agrupar.
Pero cuando usa corchetes a return de devolver un nuevo object , eso también es aplicable en cualquier otro lugar.
En conclusión, no tienen nada que ver con la declaración de return .
{} es un inicializador de objeto literal que se utiliza para construir un nuevo objeto inicializado.
() es la agrupación simple de una expresión. return ( ...acc, [cur.nickname]: cur.name ) devolvería la última expresión cur.name a medida que el operador de coma evalúa de izquierda a derecha y devolvería la última expresión.
Si está utilizando {} , lo devolverá como un objeto, por lo que debe agregarle una clave.
Consulte este ejemplo a continuación para obtener más explicaciones:
function test1() { return 'ok' } function test2() { return ('ok') } function test3() { return { message: 'ok' } // it won't accept: return {'ok'} } console.log(test1()) console.log(test2()) console.log(test3()) En su caso, el [cur.nickname] es la clave. Y el cur.name es el valor