Задать вопрос
@falconer13

Добавление свойства в объект используя неявный возврат объекта. Как работает?

Добрый день!
Есть пример стрелочной функции присвоенной переменной newPost и у одного из параметров (addedAt) есть значение по умолчанию - внутренняя функция Date, которая вычисляет дату и время при вызове функции. Сама стрелочная функция неявно возвращает объект обрамляя круглыми скобками фигурные:
const newPost = (post, addedAt = Date()) => ({
    ...post,
    addedAt,
})
const firstPost = {
    id: 1,
    author: 'Alex',
}
newPost(firstPost)

Задача функции - добавить свойство addedAt к объекту post с значением - актуальной датой и временем. Подразумевается, что post в этой функции - это объект, который разбивается на отдельные свойства, через оператор ...
У меня сразу несколько вопросов: откуда взялся этот объект post в функции? Где он был объявлен в коде? Где его свойства? Возможно подразумевается, что он был уже объявлен когда-то ранее в коде (выше)?
Почему в функции значения совпадают с их свойствами?

И еще. В итоге мы получаем новый объект присвоенный переменной firstPost уже с тремя свойствами:
id: 1,
author: 'Alex',
addedAt: значение - текущая дата и время.

И опять вопрос: firstPost - это совсем другой, новый объект или все же обновленный firstPost?
Дело в том, что после выполнения функции, если вывести в консоль firstPost, то он по-прежнему будет содержать в себе лишь 2 свойства:
id: 1,
author: 'Alex',
_____________________________________________________________________________________________________________
И еще. В задании было переделать функцию на явный возврат объетка. Я не знал, как. Нашел в интернете готовый ответ, но без пояснений, что к чему.
const newPost = (post, addedAt = Date()) => {
    const myPost = {
    ...post,
    addedAt,
  }
    return myPost
}
const firstPost = {
    id: 1,
    author: 'Alex',
}
 console.log(newPost(firstPost))


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

Спасибо.
  • Вопрос задан
  • 105 просмотров
Подписаться 1 Простой 3 комментария
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
Rocket Смоленск
от 80 000 до 130 000 ₽
div. Ставрополь
от 40 000 до 90 000 ₽
Wanted. Санкт-Петербург
До 220 000 ₽
18 дек. 2024, в 13:47
1800 руб./в час
18 дек. 2024, в 13:22
30000 руб./за проект
18 дек. 2024, в 12:37
10000 руб./за проект