Hay algo extraño.isNaN() frente a parseInt() confusión
Por qué
con isNaN("")
me sale False
Pero
con parseInt("")
consigo NaN
?
Hay algo extraño.isNaN() frente a parseInt() confusión
Por qué
con isNaN("")
me sale False
Pero
con parseInt("")
consigo NaN
?
isNaN
toma un número entero como un argumento - por lo tanto, convierte JS ""
a 0
parseInt
toma una cadena como un argumento - por lo tanto, una cadena vacía no es un número
ya respondida - duplicate http://stackoverflow.com/questions/825402/why-does-isnan -equal-false –
'isNaN' no toma un" entero ", * espera * un Número (que son todos los dobles de IEEE-754, por ejemplo' isNaN (0.5) 'produce' falso'), es por eso que intenta * escriba convertir * el valor del argumento en el número – CMS
Su derecho, pero estaba tratando de mantener la lógica simple. –
Esto es porque ""
es equivalente a cero en JavaScript Pruebe "" == 0
. Esto significa que si intenta evaluarlo en una ecuación numérica, aparecerá como 0. Cuando lo analiza, por otro lado, se da cuenta de que no hay nada allí.
Como alternativa al parseInt
puede usar Math.floor
. Esto le dará 0
para ""
.
¿Qué quiere decir exactamente con "es equivalente"? – Kos
Posible duplicado de http://stackoverflow.com/questions/825402/why-does-isnan-equal-false –
Porque 'isNaN' no usa' parseInt'? –
La clave es entender la diferencia entre ** conversión de tipo ** y ** análisis **, 'esNaN' detrás de las escenas, hará la conversión de tipo de su argumento al tipo' Número', mientras 'parseInt' intentará * analizar * la cadena proporcionada. Ver también: http://stackoverflow.com/questions/4090518/string-to-int-use-parseint-or-number – CMS