Ambas funciones de flecha deberían devolver el resultado, pero ¿por qué solo funciona la primera?
Funciona:
const createUser = (name, email) => ({name, email}) const user1 = createUser("User Test", "test@test.com") console.log(user1)No funciona:
const createUser = (name, email) => {name, email} const user1 = createUser("User Test", "test@test.com") console.log(user1)Esto se debe a que en
const createUser = (name, email) => ({name, email}) const user1 = createUser("User Test", "test@test.com") console.log(user1)la función está devolviendo un objeto. Este fragmento es similar a
const createUser = (name, email) => { return {name, email}} const user1 = createUser("User Test", "test@test.com") console.log(user1) Mientras que en el segundo fragmento, la función no devuelve nada. Es una función de flecha simple sin valor de retorno, por lo que console.log no está definido.
const createUser = (name, email) => {name, email} const user1 = createUser("User Test", "test@test.com") console.log(user1)En una función de flecha, para devolver una expresión literal de objeto se requieren paréntesis alrededor de la expresión.
Por lo tanto, su primera función de flecha tiene la sintaxis correcta para devolver un objeto literal y la segunda no.