En JavaScript, cuando utilizamos la operación 'typeof NaN', el resultado que obtenemos es 'number', lo que puede parecer contra intuitivo, pero es completamente correcto según la especificación del lenguaje.
NaN significa Not-a-Number, sin embargo, es considerado como un valor numérico en JavaScript. Esto se debe a que es el resultado de operaciones matemáticas indefinidas o irrealizables, como la división de cero por cero, la raíz cuadrada de un número negativo o la conversión de una cadena no numérica a un número.
Por lo tanto, aunque parece extraño, 'typeof NaN' devuelve 'number' en JavaScript, porque NaN es un valor especial que forma parte del conjunto de los números.
Veamos algunos ejemplos prácticos:
console.log(typeof NaN); // Devuelve "number"
var a = 0/0; // Resulta en NaN
console.log(typeof a); // Devuelve "number"
var b = Math.sqrt(-1); // Resulta en NaN
console.log(typeof b); // Devuelve "number"
var c = Number("string"); // Resulta en NaN
console.log(typeof c); // Devuelve "number"
Aunque NaN es de tipo 'number', no es igual a ningún otro valor, incluyendo a sí mismo. Entonces, no se puede confiar en la igualdad (NaN == NaN
dará falso) para verificar si una variable es NaN. En su lugar, se debe utilizar la función global isNaN()
para verificar si un valor es NaN.
var a = 0/0;
if (isNaN(a)) {
console.log('a es NaN');
} else {
console.log('a no es NaN');
}
Este código devolverá 'a es NaN'.
Resumiendo, NaN es un valor numérico especial en JavaScript que representa el resultado de una operación matemática indefinida o irrealizable. Cuando se utiliza 'typeof NaN', se devuelve 'number', ya que NaN es considerado un valor de tipo numérico. Para revisar si una variable es NaN en JavaScript, se debe utilizar la función isNaN()
.