#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.')