Как проверить тип данных в node js- специально для целого числа

Я попробовал следующее проверить тип данных (в частности, для целого), но не работает.

var i = "5";

if(Number(i) = 'NaN')
{
 console.log('This is not number'));
}

Ответы

Ответ 1

Я думаю о двух способах проверки типа значения:

Метод 1:

Вы можете использовать метод javascript isNaN, который определяет, является ли значение NaN или нет. Но поскольку в вашем случае вы тестируете числовое значение, преобразованное в строку, Javascript пытается угадать тип значения и преобразует его в число 5, которое не является NaN. Вот почему, если вы console.log вне результата, вы будете удивлены, что код:

if (isNaN(i)) {
    console.log('This is not number');
}

ничего не вернет. По этой причине лучшей альтернативой может быть метод 2.

Метод 2:

Вы можете использовать javascript typeof метод для проверки типа переменной или значения

if (typeof i != "number") {
    console.log('This is not number');
}

Обратите внимание, что я использую оператор с двойным равенством, потому что в этом случае тип значения является строкой, но Javascript внутренне преобразует в Number.

Более надежный метод принудительного использования значения для числового типа заключается в использовании Number.isNaN, который является частью нового предложения Ecmascript 6 (Harmony), следовательно, не повсеместно и полностью поддерживаются разными поставщиками.

Ответ 2

Я использовал его таким образом, и его работая нормально

quantity=prompt("Please enter the quantity","1");
quantity=parseInt(quantity);
if (!isNaN( quantity ))
{
    totalAmount=itemPrice*quantity;

}
return totalAmount;

Ответ 3

Я только что провел несколько тестов в node.js v4.2.4 (но это верно в любой реализации javascript):

> typeof NaN
'number'
> isNaN(NaN)
true
> isNaN("hello")
true

сюрприз - первый, поскольку тип NaN - это "число", но именно так оно определено в javascript.

Итак, следующий тест вызывает неожиданный результат

> typeof Number("hello")
"number"

потому что Number ( "hello" ) - NaN

Следующая функция выполняет ожидаемые результаты:

function isNumeric(n){
  return (typeof n == "number" && !isNaN(n));
}

Ответ 4

Ваша логика правильная, но у вас есть 2 ошибки, по-видимому, все пропустили:

просто измените if(Number(i) = 'NaN') на if(Number(i) == NaN)

NaN является константой, и вы должны использовать знак double для сравнения, для назначения значений переменным используется один.

Ответ 5

вы можете попробовать этот isNaN(Number(x)) где x - любая вещь, такая как строка или номер

Ответ 6

Если вы хотите узнать, может ли "1" выйти на номер, вы можете использовать этот код:

if (isNaN(i*1)) {
     console.log('i is not a number'); 
}

Ответ 7

var val = ... //the value you want to check
if(Number.isNaN(Number(val))){
  console.log("This is NOT a number!");
}else{
  console.log("This IS a number!");
}

Ответ 8

Вы можете проверить свои номера, проверив их конструктор.

var i = "5";

if( i.constructor !== Number )
{
 console.log('This is not number'));
}