Помогите с Java Script, легкое

const newPost = (post, addedAt = Date()) => {

...post,
    addedAt,
    return post
}
const postOne = {
    id: 1,
    author: 'rofler2005'
}
newPost(postOne)

ошибка

declaration or statement expected.

почему? если я ставлю круглые скобки вместе с фигурными в функции, то все нормально, но если я хочу вернуть с помощью return, как поступить?


Ответы (1 шт):

Автор решения: Алексей Шиманский

как поступить?

Если хотите вернуть объект, при этом в стрелочной функции, то надо оборачивать в круглые скобочки. При этом никакие return post уже не нужно, т.к. при конструкции => ({ }) уже будет применён return.

Почему в данном случае нужны круглы скобки? Потому что возвращается объект, который обычно обозначается через фигурные скобки, но и в стрелочных функциях фигурные скобки означают, что будет тело функции и потом возврат значения через return. Получается конфликт парсинга. Не ясно к чему относятся фигурные скобки. Чтобы интерпретатор мог однозначно понять, что это именно возврат объекта, а не скобки, которые относятся к телу функции - люди, через лайфхак, оборачивают этот объект в круглые скобки. Они ни на что не влияют, только дают пониманию интерпретатору, что это уже не фигурные скобки функции, а что-то другое.

Либо можно писать понятнее для интерпретатора, т.е.:

=> {
    return {
        ...post,
        addedAt,
    }
}
→ Ссылка