Unreachable code в ES Lint
const getRandomNumber = function(min, max, fraction) {
if (min >= 0 && max >= 0 && max > min) {
const randomNumber = Math.random() * (max - min) + min;
const fractionalNumber = Number(randomNumber.toFixed(fraction));
return fractionalNumber;
if (fractionalNumber > max) {
return max;
}
} else if (min >= max) {
return ('Ошибка! Значение max меньше или равно значению min');
} else if (min < 0 || max < 0) {
return ('Ошибка! Указаны отрицательные значения');
}
}
Всем привет! Делаю задачу по курсу JS. Нужно написать функцию, возвращающую число с плавающей запятой. Написала, но нужно было что-то сделать с проверкой на max, возвращаемого результата. Пыталась его добавить в else if с переменной fractionalNumber, но понятно, что вне блока ее не видно. Тогда попробовала вложенное условие, но теперь линтер говорит: Unreachable code. Что можно с этим сделать?)
Ответы (1 шт):
Линтер выдает вам Unreachable code потому, что у вас return идет до условия, где выполняется проверка (fractionalNumber > max). Всё, что идет после return отбрасывается, т.к интерпретатор завершает выполение функции и возвращает результат.
Чтобы ваша функция работала так, как вы задумывали, она должна выглядеть так:
const getRandomNumber = (min, max, fraction) => {
if (min >= 0 && max >= 0 && max > min) {
const randomNumber = Math.random() * (max - min) + min;
const fractionalNumber = Number(randomNumber.toFixed(fraction));
if (fractionalNumber > max) { // если условие if выполняется
return max; // возвращаем max
}
// если условие не выполнилось
return fractionalNumber; // возвращаем fractionalNumber
}
if (min >= max) {
return ('Ошибка! Значение max меньше или равно значению min');
}
if (min < 0 || max < 0) {
return ('Ошибка! Указаны отрицательные значения');
}
return null;
};
console.log(getRandomNumber(0, 3, 5)); // 2.61601
console.log(getRandomNumber(3, 0, 2)); // Ошибка! Значение max меньше или равно значению min
console.log(getRandomNumber(-3, 30, 3)); // Ошибка! Указаны отрицательные значения