Проверяйте тип и допустимость входов до вычисления; не подменяйте ошибочные данные нулём без согласованного бизнес-правила.
Как обезопасить функцию подсчёта суммы, если бэкендер может прислать некорректные данные (undefined, строки вместо чисел)?
Проверяйте тип и допустимость входов до вычисления; не подменяйте ошибочные данные нулём без согласованного бизнес-правила.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Проверяйте тип и допустимость входов до вычисления; не подменяйте ошибочные данные нулём без согласованного бизнес-правила.
Например:
function sum(a, b) {
if (!Number.isFinite(a) || !Number.isFinite(b)) throw new TypeError('Ожидаются конечные числа');
const result = a + b;
if (!Number.isFinite(result)) throw new RangeError('Переполнение');
return result;
}
Строки и undefined отклоняются. Если строки разрешены контрактом, преобразуйте и проверяйте их явно на внешней границе.