Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   явный возврат объекта (https://javascript.ru/forum/misc/84986-yavnyjj-vozvrat-obekta.html)

ntxhaiss 25.02.2023 01:06

явный возврат объекта
 
Доброй ночи, совсем недавно начал изучать js, просматривал видеокурс - пока что остановился на теме стрелочных функций, так вот вопрос, дан код ниже
const newPost=(post,addedAt=Data()) => ({
...post,
addedAt,
})
const firstPost={
id:1,
author:'name',
}
const tell=newPost(firstPost)
console.log(tell)

и необходимо переписать код так чтобы с неявного возврата объекта был явный возврат объекта. сидел,бился так и не добился, за помощь спасибо

ntxhaiss 25.02.2023 01:27

Цитата:

Сообщение от Rise (Сообщение 550886)
Явный возврат это когда написано слово return.

да, я понимаю, но если return не работает в данной функции с неявным возвратом, поэтому необходимо опустить круглые скобки, после чего
разделение объекта post на свойства уже не происходит, ошибка синтаксиса, оператор ... выделен красным,дальше я что только не делал возвращалась только Data()

ntxhaiss 25.02.2023 19:16

Цитата:

Сообщение от Rise (Сообщение 550888)
ntxhaiss,
Тело функции тоже должно быть показано явно: () => { return ({}) }, неявно: () => ({}).

благодарю за пояснение, все получилось

ksa 25.02.2023 20:11

Сойдет и так...
() => { return {} }

Вообще без круглых скобок.

ksa 25.02.2023 22:09

Цитата:

Сообщение от Rise
Неа, из-за троеточия ошибка буде

Бивас, тест! (с)

const tmp = {k1: 1, k2: 2}
const test = () => { return {...tmp, ok: true} }
alert(JSON.stringify(test()))

Работает и со спредом... ;)

ePaul69 12.11.2024 16:44

Добрый день. Столкнулся с такой же проблемой.
 
Как уже сказал, искал точно такое же решение. Но к сожалению не смог вывести его из постов, которые уже есть в данной ветке.
Поэтому прилагаю свое решение:

// Создаю объект, который в дальнейшем закину 
// как аргумент в функцию
const post = {
    id: 1,
    author: 'Paul'
}

// Далее соответственно создаем функцию
const newPost = (post, addedAt = Date()) => { 
    post.addedAt = addedAt // добавляем к объекту свойство
    return post // явно передаем созданный в нашей функции объект
}

console.log(newPost(post));


Не уверен что это правильное решение, но вроде работает.

Ну и только только врубился в решение указанное ksa, простите. Переделал его под свой пример и все получилось. Еще раз большое спасибо.
// Создаю объект, который в дальнейшем закину
// как аргумент в функцию
const post = {
    id: 1,
    author: 'Paul'
}

// Далее соответственно создаем функцию
const newPost = (post, addedAt = Date()) => {return {...post, addedAt}} // явно передаем созданный в нашей функции объект

console.log(newPost(post));

ksa 12.11.2024 17:22

Цитата:

Сообщение от ePaul69
post = post

Это масло масляное... :)
Можно просто удалить.

Цитата:

Сообщение от ePaul69
Не уверен что это правильное решение, но вроде работает.

Так смотря что ты решал этим кодом...

ePaul69 12.11.2024 20:25

явная передача объекта
 
Решал туже задачу что и автор, хотел явно передать объект из функции(Что бы это не значило).

Поправил масло масляное с 'post', спасибо


Часовой пояс GMT +3, время: 01:54.