Что возвращает функция в JavaScript по умолчанию?

«Что возвращает функция в JavaScript по умолчанию?» — вопрос из категории JavaScript, который задают на 24% собеседований AQA / Automation. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В 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.