В приведённом ниже коде machineMonthNumber - это номер месяца от 0 до 11 (в отличие от humanMonthNumber - номер месяца от 1 до 12). Функция validateMachineMonthNumber(machineMonthNumber), как видно из названия, валидирует машинный номер месяца: сначала проверяется тип данных аргумента, потом его целочисленность и наконец, диапазон.
function validateMachineMonthNumber(machineMonthNumber){
if (typeof machineMonthNumber !== 'number') {
throw new Error('validateMachineMonthNumber() ошибка: тип аргумента должен быть числом');
}
if (!Number.isInteger(machineMonthNumber)) {
throw new Error('validateMachineMonthNumber() ошибка: аргумент должен быть целочисленным.');
}
if (machineMonthNumber < 0 || machineMonthNumber > 11) {
throw new Error('validateMachineMonthNumber() ошибка: аргумент должен быть целым числом от 0 до 11');
}
}
При бросании исключения указано, в какой функции это исключение было брошено. Но функцию validateMachineMonthNumber() планируется использовать внутри других функций, а потому сообщение о том, что ошибка исключение произошла именно в validateMachineMonthNumber(), хотя и является точным, но не даст информации и том, из какой функции был получен аргумент machineMonthNumber. А как это можно узнать?
Метод Function.caller имеет статус depricated. Какие ещё есть альтернативы?
Сборка персонального компьютера от Artline: умный выбор для современных пользователей