Ответ
В JavaScript функция, в которой нет оператора return, или в которой return указан без значения, возвращает undefined.
Примеры:
// 1. Функция без оператора return
function doSomething() {
console.log('Выполняю действие');
}
const result1 = doSomething(); // В консоль: 'Выполняю действие'
console.log(result1); // undefined
// 2. Функция с пустым return
function returnEarly(condition) {
if (condition) {
return; // Пустой return
}
console.log('Условие не выполнено');
}
const result2 = returnEarly(true);
console.log(result2); // undefined
Важность для тестирования:
Это поведение критично при написании модульных тестов, так как неявное возвращение undefined может привести к ошибкам.
- Тестирование возвращаемого значения: Всегда нужно проверять, что функция возвращает ожидаемый результат, а не
undefinedпо умолчанию.// Тест для функции, которая должна возвращать число function calculateSum(a, b) { // Разработчик забыл добавить return a + b; // Эта строка вычисляется, но результат не возвращается! }
// Модульный тест (Jest) test('calculateSum should return the sum of two numbers', () => { const result = calculateSum(2, 3); expect(result).toBe(5); // Тест упадёт, так как result === undefined });
* **Цепочка вызовов:** Если функция, возвращающая `undefined`, используется в цепочке вызовов (например, `map`), это вызовет ошибку.
```javascript
const numbers = [1, 2, 3];
const doubled = numbers.map(num => {
num * 2; // Забыли return -> callback возвращает undefined
});
console.log(doubled); // [undefined, undefined, undefined]
Поэтому в своей практике я всегда явно указываю возвращаемое значение и пишу тесты, которые покрывают как успешные сценарии, так и граничные случаи, включая проверку на undefined.