Добрый день!
Есть пример стрелочной функции присвоенной переменной 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?
Спасибо.