Ответ
В 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 и будешь потом волнение ебать, где ошибка.