Не понимаю, почему не работает проверка на число

По идеи, программа должна проверять два числа на то что они числа (по отдельности), а потом сравнить их. Но всё зацикливается, почему?

const firstNumber = prompt("Введите первое число: ");
while (isNumber(firstNumber) === 0) {
    const firstNumber = prompt("Введите первое число: ");
}
const secondNumber = prompt("Введите второе число: ");
while (isNumber(firstNumber) === false) {
    const secondNumber = prompt("Введите второе число: ");
}


if (firstNumber > secondNumber) {
    alert("Первое число больше второго");
};
if (firstNumber < secondNumber) {
    alert("Второе число больше первогоо");
};
if (firstNumber == secondNumber) {
    alert("Числа равны");
}

function isNumber(n) {
    return isNaN(parseFloat(n)) && isFinite(n);
}


Ответы (2 шт):

Автор решения: qRi

Уберите с вашего кода бесконечные циклы, тогда не будет зацикливаться

const checkNumbers = () => {
  const one = prompt("Введите первое число: ");
  const two = prompt("Введите второе число: ");

  if ( one > two )
    alert('1 > 2')
  else if ( one < two )
    alert('1 < 2')
  else if ( one == two ) alert('1==2')

   //мы получили результат сравнения первой пары чисел, проведем еще одну проверку
    checkNumbers()
}

checkNumbers()


function isNumber(n) {
    return isNaN(parseFloat(n)) && isFinite(n);
}

→ Ссылка
Автор решения: vsemozhebuty

У вас тут сразу несколько проблем.

  1. Не повторяйте const или let внутри блока, так вы создаёте новую переменную с видимостью только внутри блока, а не переопределяете прежнюю.
  2. Используйте let, если будете переопределять переменную.
  3. Поскольку функция isNumber(n) возвращает логическое значение, строгое сравнение его с нулём всегда будет ложным.
  4. Две части сравнения в isNumber(n) противоречат друг другу.
  5. Второй раз вы опять проверяете первое число.
let firstNumber = prompt("Введите первое число: ");
while (!isNumber(firstNumber)) {
    firstNumber = prompt("Введите первое число: ");
}
let secondNumber = prompt("Введите второе число: ");
while (!isNumber(secondNumber)) {
    secondNumber = prompt("Введите второе число: ");
}

firstNumber = Number(firstNumber);
secondNumber = Number(secondNumber);

if (firstNumber > secondNumber) {
    alert("Первое число больше второго");
};
if (firstNumber < secondNumber) {
    alert("Второе число больше первогоо");
};
if (firstNumber == secondNumber) {
    alert("Числа равны");
}

function isNumber(n) {
    return !isNaN(parseFloat(n)) && isFinite(n);
}
→ Ссылка