Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про JavaScript: async function, Promise, return, undefined, JavaScript

Что возвращает async функция, если внутри нее нет return?

Вопрос проверяет понимание поведения async функций в JavaScript, особенно когда они не содержат явного return, что важно для работы с асинхронным кодом и промисами.

Короткий ответ

Async функция всегда возвращает Promise. Если внутри async функции нет оператора return, она неявно возвращает Promise, который разрешится (resolve) со значением undefined. Это аналогично обычной функции, которая без return возвращает undefined, но обёрнутому в Promise. Например, async function foo() {} вернёт Promise, который выполнится как Promise.

Длинный ответ

Async функции в JavaScript — это функции, объявленные с ключевым словом async. Они предназначены для упрощения работы с асинхронными операциями, основанными на промисах. Ключевое правило: async функция всегда возвращает объект Promise, независимо от того, что происходит внутри её тела.

Поведение при отсутствии return

Если в async функции нет оператора return (или есть return без значения), JavaScript неявно возвращает undefined, но оборачивает его в разрешённый (resolved) Promise. Это аналогично тому, как обычная функция без return возвращает undefined, но с добавлением промисной обёртки.

Пример кода

Рассмотрим простой пример:

async function noReturn() {
  // Нет оператора return
}

const result = noReturn();
console.log(result); // Promise { <state>: "fulfilled", <value>: undefined }

result.then(value => {
  console.log(value); // undefined
});

В этом коде функция noReturn не содержит return, поэтому она возвращает Promise, который автоматически разрешается со значением undefined. Мы можем использовать методы .then() или await для получения этого значения.

Практическое применение

Такое поведение полезно в сценариях, где async функция выполняет побочные эффекты (например, логирование или отправку данных), но не должна возвращать конкретное значение. Например, функция для отправки аналитического события:

async function sendAnalytics(event) {
  await fetch('/api/analytics', {
    method: 'POST',
    body: JSON.stringify(event)
  });
  // Нет return, но функция всё равно возвращает Promise<undefined>
}

// Использование:
sendAnalytics({ action: 'click' })
  .then(() => console.log('Аналитика отправлена'))
  .catch(err => console.error('Ошибка:', err));

Здесь мы можем обрабатывать завершение операции или ошибки через Promise, даже если функция не возвращает данных.

Вывод

Async функция без return возвращает Promise, разрешённый со значением undefined. Это поведение гарантирует согласованность: любая async функция может быть обработана как Promise, что упрощает асинхронный поток управления и обработку ошибок. Используйте это, когда вам нужно выполнить асинхронное действие без необходимости возврата конкретного результата.

Уровень

  • Рейтинг:

    3

  • Сложность:

    2

Навыки

  • JavaScript

    JavaScript

Ключевые слова

#async function

#Promise

#return

#undefined

#JavaScript

Подпишись на React Developer в телеграм