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

Ответ

В JavaScript функция, в которой нет оператора return, или оператор return указан без значения, всегда возвращает undefined.

Это поведение встроено в язык и отличается, например, от Python, где в аналогичном случае возвращается None.

Примеры:

// 1. Функция без оператора return
function doSomething() {
    const x = 10;
    // Нет return
}
console.log(doSomething()); // undefined

// 2. Функция с пустым return
function returnNothing() {
    return;
}
console.log(returnNothing()); // undefined

// 3. Стрелочная функция с блоком тела, но без return
const arrowFunc = () => { 5 + 3; };
console.log(arrowFunc()); // undefined

// 4. Стрелочная функция с неявным возвратом (есть значение)
const implicitReturn = () => 5 + 3;
console.log(implicitReturn()); // 8

Практическое следствие: Всегда явно указывайте возвращаемое значение. Это особенно важно при работе с методами массивов (map, filter), где неявный возврат undefined может привести к ошибкам.

// Ошибка: map создаст массив из undefined
const badResults = [1, 2, 3].map(num => {
    num * 2; // Забыли return
});
console.log(badResults); // [undefined, undefined, undefined]

Ответ 18+ 🔞

Да ты послушай, что за дичь творится в этом JavaScript! Сидишь такой, пишешь функцию, думаешь — ну вот, щас она мне что-то посчитает, вернёт... Ан хуй там плавал! Если ты забыл написать return или написал его голым, без значения — функция тебе любезно подсовывает undefined. Вот так вот, на тебе, получай, распишись.

Это, блядь, не как в том Питоне, где в таких случаях хотя бы None прилетает — тут тебе чистый, кристальный undefined, ёпта. Встроено прямо в язык, никуда не денешься.

Смотри, как это выглядит:

// 1. Функция, в которой про возврат забыли начисто
function doSomething() {
    const x = 10;
    // А return-то где, сука? Его нет!
}
console.log(doSomething()); // undefined — вот твой результат, мудак

// 2. Функция, которая вроде как возвращает, но нихуя
function returnNothing() {
    return; // А возвращать-то что? Воздух?
}
console.log(returnNothing()); // undefined, опять двадцать пять

// 3. Стрелочная функция с телом в фигурных скобках, но без return
const arrowFunc = () => { 5 + 3; }; // Посчитал и промолчал, хитрая жопа
console.log(arrowFunc()); // undefined, я же говорил!

// 4. А вот так — работает! Потому что неявный возврат
const implicitReturn = () => 5 + 3; // Без скобок — красота
console.log(implicitReturn()); // 8, ура, товарищи!

А теперь практический вывод, который в лоб надо себе на лбу вытатуировать: всегда явно указывай, что возвращаешь! Особенно когда работаешь с методами вроде map или filter. А то накосячишь — и потом сидишь, чешешь репу: "Почему у меня массив из undefined?"

// Классический косяк новичка: забыл return в map
const badResults = [1, 2, 3].map(num => {
    num * 2; // Посчитал и... забыл вернуть, блядь
});
console.log(badResults); // [undefined, undefined, undefined] — вот тебе и результат, ебать мои старые костыли

Вот так вот, дружок. Возвращай явно, а то получишь undefined и будешь потом волнение ебать, где ошибка.