Помогите новичку разобраться в основах js)
Пример с видео урока:
const newPost = (post, addedAt = Date()) => ({
...post,
addedAt,
})
const firstPost = {
id: 1,
author: 'Bogdan',
}
//console.table(newPost(firstPost)); // То что было на уроке
console.log(newPost(firstPost)); // Для вывода в Code Snippet
Я пытаюсь его слегка изменить:
- В примере неявный возрат объекта, я пытаюсь его сделать явным, но в функции я не присваивал значение, по этому не пойму как вернуть
const newPost = (post, dat = Date()) => {
...post,
dat,
return newPost
}
const onePost = {
id:1,
author: 'Sergii',
}
poss = newPost(onePost)
//console.table(poss); // Не работает в Code Snippet
console.log(poss); // Для вывода в Code Snippet
Так же в ходе обучения упустил, как написание
newPost(firstPost)связывает две конструкции что прописаны над ними?...Разбивает объект на свойства, но что это даёт? Свойства ведь и так прописаны, или разделять нужно только в каких-то определённых случаях?
Ранее повторно пересматривал теорию и искал в интернете, но конкретно по этим вопросам точный ответ найти не смог, очень выручите ответом.
Ответы (2 шт):
неявно возвращает объект
{
...post,
addedAt,
}
Для явного возврата нужно возвращать его же:
const newPost = (post, dat = Date()) => {
return {
...post,
dat,
};
}
const onePost = {
id: 1,
author: 'Sergii',
}
poss = newPost(onePost)
//console.table(poss); // Не работает в Code Snippet
console.log(poss); // Для вывода в Code Snippet
... - ничего не разбивает.
Данном случае выражение
{
...post,
addedAt,
}
Аналогично следующему:
Object.assign({}, post, {addedAd})
А именно создается новый объект, в который копируются все ключи и их значения из объекта post и добавляется поле addedAt с соответствующим значением.
const newPost = (post, addedAt = Date()) => {return({...post, addedAt,})}
const firstPost = {
id:1,
author: 'Bogdan'
}
newPost(firstPost)
console.table(newPost(firstPost))