2016-01-27 3 views
1

У меня есть функция, чтобы проверить, если приглашение ввода является число, например, так:Функция javascript isNaN() не работает?

function myFunction() 
{ 
    var person = prompt("Please enter your name", ""); 

    if (person != null) 
    { 
     if(isNaN(person)) 
     { 
      document.write("hello " + person + "<br><br>"); 
     } 
     else 
      document.write("You gave me a number"); 

    } 
    else 
    { 
     document.write("You didn't answer.<br><br>"); 
    } 
} 

, но каждый раз, когда я ввожу номер он держит вывод привет + номер. Я уже давно занимаюсь поиском этой функции, и для меня это не имеет смысла, похоже, что она должна работать. Почему человек возвращается к истине?

+1

Попробуйте заменить все ваши вызовы 'document.write'' console.log' и посмотреть, что произойдет. Затем прочитайте, как работает ['document.write'] (https://developer.mozilla.org/en-US/docs/Web/API/Document/write). – j08691

+1

Я не могу воспроизвести это. Какой браузер вы используете? –

+0

Просто потому, что это не 'NaN' или' null', это не значит, что это целое число ... – War10ck

ответ

1

Функция isNaN проверяет, является ли значение NaN. NaN - это значение, которое возникает при выполнении операций, требующих номера с не номерами. См. documentation. Однако функция не проверить, имеет ли значение номер типа. Слишком проверить, является ли значение числа типа Используйте typeof оператор

typeof person === 'number' 
2

NaN is a special value in Javascript. То, что делает isNaN, - это проверка, чтобы проверить, равно ли переданное значение * этому специальному значению. Если вы хотите проверить, если что-то есть, скажем, не поток чисел, вы можете использовать регулярное выражение:

if (!/^\d+(\.\d+)?/.exec(person)) { 

Или разобрать значение как число и посмотреть, если он преобразует обратно в ту же строку:

var n = parseFloat(person); 
if (n.toString() !== person) { 

* По этой причине мы не используем ===, но это выходит за рамки этого ответа.

+0

Вы также можете просто проверить для 'NaN', используя' if (x! = X) {...} ', который справедлив только для' NaN' ... – War10ck

Смежные вопросы