Как isNaN проверяет значение подсказки, возвращающей только строку в этом коде?

#javascript #prompt

#javascript #запрос

Вопрос:

Насколько я знаю, запрос возвращает только строковый тип значения. Тогда, как приведенный ниже код работает должным образом?

 var a = prompt('Number or String? Verify now!');

if(!isNaN(a)){
  alert('This is number.');
}
else alert('This is string.')
  

Ответ №1:

Из https://www.w3schools.com/jsref/jsref_isNaN.asp, Глобальная функция isNaN() преобразует проверенное значение в число, затем проверяет его.

Функция isNaN() определяет, является ли значение недопустимым числом (Not-a-Number).

Эта функция возвращает true, если значение равно NaN. В противном случае он возвращает false.

Эта функция отличается от метода Number specific Number.isNaN(), определяемого числом.

Глобальная функция isNaN() преобразует проверенное значение в число, затем проверяет его.

Number.isNaN() не преобразует значения в число и не возвращает true для любого значения, которое не имеет типа Number.

Ответ №2:

isFinite(значение) преобразует свой аргумент в число и возвращает true, если это обычное число, а не NaN / Infinity /-Бесконечность:

  alert( isFinite("15") ); // true
alert( isFinite("str") ); // false, because a special value: NaN
  

Иногда isFinite используется для проверки того, является ли строковое значение обычным числом, поэтому проверьте этот код

var a = prompt(‘Число или строка? Проверьте сейчас!’);

 if(isFinite(a)){
  alert('This is number.');
}
else alert('This is not number.')