Próbowałem następujące sprawdzić typ danych (specjalnie dla liczby całkowitej), ale nie działa.jak sprawdzić typ danych w węźle js - specjalnie dla liczby całkowitej
var i = "5";
if(Number(i) = 'NaN')
{
console.log('This is not number'));
}
Próbowałem następujące sprawdzić typ danych (specjalnie dla liczby całkowitej), ale nie działa.jak sprawdzić typ danych w węźle js - specjalnie dla liczby całkowitej
var i = "5";
if(Number(i) = 'NaN')
{
console.log('This is not number'));
}
myślę z dwóch sposobów, aby przetestować dla typu wartości:
Metoda 1:
Można użyć metody javascript isNaN
, która określa, czy wartość to NaN, czy nie. Ale ponieważ w twoim przypadku testujesz wartość liczbową konwertowaną na ciąg znaków, JavaScript próbuje odgadnąć typ wartości i przekształca ją na wartość 5, która nie jest równa NaN
. Dlatego jeśli console.log
się wynik, będziesz zaskoczony, że kod:
if (isNaN(i)) {
console.log('This is not number');
}
niczego nie powrócić. Z tego powodu lepszym rozwiązaniem byłaby metoda 2.
Metoda 2:
Można użyć javascript metody typeof przetestować typ zmiennej lub wartość
if (typeof i != "number") {
console.log('This is not number');
}
Zauważ, że "Używam podwójnego operatora równościowego, ponieważ w tym przypadku typem wartości jest ciąg znaków, ale JavaScript wewnętrznie przekształci się w Number.
Bardziej niezawodną metodą wymuszenia wartości na typ numeryczny jest użycie Number.isNaN, która jest częścią nowej propozycji Ecmascript 6 (Harmony), a więc nie jest rozpowszechniona i w pełni obsługiwana przez różnych dostawców.
Jeszcze lepszy 'typof i! =" Liczba "'. – SeinopSys
Użyłem go w ten sposób i jego pracy grzywny
quantity=prompt("Please enter the quantity","1");
quantity=parseInt(quantity);
if (!isNaN(quantity))
{
totalAmount=itemPrice*quantity;
}
return totalAmount;
patrz ten kod i zmodyfikuj swój kod ... –
+1 za umieszczenie oświadczenia zwrotu w środku klauzuli if/else. bo kto potrzebuje zasad językowych, prawda? ANARCHIA! – deepelement
Twoja logika jest poprawna, ale masz 2 błędy widocznie każdy nieodebrane:
wystarczy zmienić if(Number(i) = 'NaN')
do if(Number(i) == NaN)
NaN
jest stała i powinieneś użyć podwójne znaki równości porównania, jeden z nich jest używany do przypisywania wartości do zmiennych.
Zrobiłem kilka testów w node.js v4.2.4 (ale to prawda w dowolnej implementacji JavaScript):
> typeof NaN
'number'
> isNaN(NaN)
true
> isNaN("hello")
true
niespodzianką jest pierwszy jako rodzaj NaN jest „numer”, ale tak to jest zdefiniowane w javascript.
Więc następnym testy wywołuje nieoczekiwany rezultat
> typeof Number("hello")
"number"
ponieważ Number ("Hello") jest NaN
Poniższa funkcja sprawia, że wyniki zgodnie z oczekiwaniami:
function isNumeric(n){
return (typeof n == "number" && !isNaN(n));
}
można spróbować ten kod jest dowolną rzeczą, taką jak łańcuch lub liczba:
Jeśli chcesz wiedzieć, czy „1” ou 1 można rzutować na liczby, można użyć tego kodu:
if (isNaN(i*1)) {
console.log('i is not a number');
}
have u próbował isNaN? możliwy duplikat http://stackoverflow.com/questions/175739/is-there-a-built-in-way-in-javascript-to-check-if-a-tring-is-a-valid-number – Blacksonic