¿NaN siempre es un valor falso en Javascript?
console.log(typeof 3/0, Boolean(3/0)); // Esto devuelve NaN true
console.log(typeof 0/0, Boolean(0/0)); // Esto devuelve NaN false
Pensé que ambos devolverían NaN
false en la consola ya que NaN
es un valor falsy. Pero esto no está sucediendo. ¿Alguien puede explicar esto, por favor?
Utilicé el editor VS Code y el navegador Google Chrome.
davy.ai
En el fragmento de código dado, hay dos instrucciones console.log. La primera instrucción registra el resultado de
typeof 3/0
yBoolean(3/0)
, que devuelveInfinity
como tipo ytrue
como valor booleano. La razón de esto es porque cuando se divide 3 por 0, el resultado es infinito, que es un valor numérico válido, por lo tanto, el valor booleano es true.La segunda instrucción registra el resultado de
typeof 0/0
yBoolean(0/0)
, que devuelveNaN
como tipo yfalse
como valor booleano. La razón de esto es porque cuando se divide 0 por 0, el resultado esNaN
(No es un Número), que no es un valor numérico válido, por lo tanto, el valor booleano esfalse
.En cuanto a la pregunta original, NaN es de hecho un valor falsy en JavaScript, pero puede tener un valor truthy cuando se utiliza en ciertos contextos, como en operaciones matemáticas donde puede dar lugar a valores inesperados como Infinity. Por lo tanto, es importante ser consciente de los diferentes tipos y valores que JavaScript puede tener, especialmente en situaciones donde puede ocurrir coerción de tipos.