Both arrow functions should return the result, but why does only the first one work?
It works:
const createUser = (name, email) => ({name, email})
const user1 = createUser("User Test", "test@test.com")
console.log(user1)
Does not work:
const createUser = (name, email) => {name, email}
const user1 = createUser("User Test", "test@test.com")
console.log(user1)
This is because in
const createUser = (name, email) => ({name, email})
const user1 = createUser("User Test", "test@test.com")
console.log(user1)
function is returning an object. This snippet is similar to
const createUser = (name, email) => { return {name, email}}
const user1 = createUser("User Test", "test@test.com")
console.log(user1)
Whereas in the second snippet, the function is not returning anything. It is a simple arrow function with no return value which is why console.log is undefined.
const createUser = (name, email) => {name, email}
const user1 = createUser("User Test", "test@test.com")
console.log(user1)
In an arrow function, to return an object literal expression requires parentheses around expression.
Therefore, your first arrow function has the correct syntax for returning an object literal, and the second one does not.