C'è qualcosa di strano.isNaN() vs. parseInt() confusione
Perché
con isNaN("")
ottengo False
Ma
con parseInt("")
ricevo NaN
?
C'è qualcosa di strano.isNaN() vs. parseInt() confusione
Perché
con isNaN("")
ottengo False
Ma
con parseInt("")
ricevo NaN
?
isNaN
prende un intero come argomento - quindi JS converte ""
a 0
parseInt
prende una stringa come argomento - quindi una stringa vuota non è un numero
già risposto - duplicato http://stackoverflow.com/questions/825402/why-does-isnan -equal-false –
'isNaN' non accetta un" intero ", * si aspetta * un numero (che sono tutti IEEE-754 raddoppia, es.' isNaN (0.5) 'produce' falso'), ecco perché cerca di * Digitare convert * il valore dell'argomento al numero – CMS
Il tuo diritto - ma stavo cercando di mantenere la logica semplice. –
Questo perché ""
è equivalente a zero in JavaScript. Prova "" == 0
. Ciò significa che se provi a valutarlo in un'equazione numerica, verrà visualizzato come 0. Quando lo analizzi, d'altra parte, realizza che non c'è niente lì.
In alternativa a parseInt
è possibile utilizzare Math.floor
. Questo ti darà 0
per ""
.
Cosa intendi esattamente per "è equivalente"? – Kos
Possibile duplicato di http://stackoverflow.com/questions/825402/why-does-isnan-equal-false –
Perché 'isNaN' non usa' parseInt'? –
La chiave è capire la differenza tra ** type conversion ** e ** parsing **, 'isNaN' dietro le quinte, eseguirà la conversione del suo argomento nel tipo' Number', mentre 'parseInt' proverà a * analizzare * la stringa fornita. Vedi anche: http://stackoverflow.com/questions/4090518/string-to-int-use-parseint-or-number – CMS