Всем привет. Имеется следующий вопрос. Нужно сделать функцию, которая выводит числа в введенном диапазоне. Такую функцию сделал, при вводе двух значений, работает норм. Но возникает проблема, если ввожу только одно число, она не работает, т.к. требует и второе. Пробовал делать что-то типа проверки через if. И если второе число == underfind, то min == max, а min == 1, в свою очередь. (если введено только одно число, то оно становится максимальным, а минимальным стает единица), но тогда вообще бред выходит.
function randomInteger(min, max) {
let rand = min - 0.5 + Math.random() * (max - min + 1);
return Math.round(rand);
}
alert( randomInteger(prompt(), prompt()) );
Мой подход был бы таким. Первым параметром сделать max. min сделать вторым и логически описать как опциональным. Т.е. если min не определен, то использовать 0 или 1 (это тоже интересная тема какое значение выбрать).
Забавно что стандартный синтаксис значения по умолчанию function randomInteger(max, min = 1) { не работает как ожидалось бы: значение по умолчанию не устанавливается если закрыть второй prompt так как min при вызове alert(randomInteger(prompt(), prompt())); все таки передается, просто он null. Поэтому я выбрал проверять значение min на null и undefined чтобы покрыть случаи как для prompt-а, так и для вызова без него: randomInteger(10).
function randomInteger(max, min) {
if (!max) {
throw new Error('Функция требует хотя бы одного аргумента')
}
if (min == null) {// проверка и на null и на undefined из-за нестрогости ==
min = 1
}
let rand = min - 0.5 + Math.random() * (max - min + 1);
return Math.round(rand);
}
alert(randomInteger(prompt(), prompt()));