Помогите новичку разобраться в основах js)

Пример с видео урока:

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

const firstPost = {
  id: 1,
  author: 'Bogdan',
}

//console.table(newPost(firstPost)); // То что было на уроке

console.log(newPost(firstPost)); // Для вывода в Code Snippet

Я пытаюсь его слегка изменить:

  1. В примере неявный возрат объекта, я пытаюсь его сделать явным, но в функции я не присваивал значение, по этому не пойму как вернуть

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

  1. Так же в ходе обучения упустил, как написание newPost(firstPost) связывает две конструкции что прописаны над ними?

  2. ... Разбивает объект на свойства, но что это даёт? Свойства ведь и так прописаны, или разделять нужно только в каких-то определённых случаях?

Ранее повторно пересматривал теорию и искал в интернете, но конкретно по этим вопросам точный ответ найти не смог, очень выручите ответом.


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

Автор решения: Grundy

неявно возвращает объект

{
  ...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 с соответствующим значением.

→ Ссылка
Автор решения: user574509
const newPost = (post, addedAt = Date()) => {return({...post, addedAt,})}

const firstPost = {
  id:1,
  author: 'Bogdan'
}
newPost(firstPost)
console.table(newPost(firstPost))
→ Ссылка