Comprendiendo que es NaN, null y undefined en javascript

“NaN” es el acrónimo para “Not a Number” y obtenemos este error cuando estamos tratando de hacer un cast hacia Number de un tipo de dato que no es numérico, por lo que se lanza la excepción “NaN”.

Por ejemplo, tengo una variable de tipo texto la que luego intentaré convertir a número y obviamente fallará enviando un “NaN”.

var miTexto = 'Dije que soy un texto';
console.log(Number(miTexto));
// output: NaN

El concepto de “null” siempre es difícil de explicar, pero es una variable reservada del lenguaje y es como un estado de una variable o propiedad que indica que no tiene ningún valor asignado, algunas veces se comporta como un objeto y otras no, un tanto extraño no ??

var val = null;
 
console.log(window.val);
// output: null
 
console.log(typeof window.val)
// output: "object"
// aunque no hereda de "Object"
 
console.log(window.val == undefined)
// output: true
// undefined porque no tiene ningún valor
 
console.log(window.val == null)
// output: true
// null porque su valor es ese

Creo que por esta última comparación es que muchos programadores se confunden un poco, porque creen que comparar contra undefined o null es lo mismo, pero no es así.. ya que solamente aplica a variables que hay sido declaradas desde su inicio como null.

Sobre “undefined”, en javascript básicamente cuando creamos una variable, ésta es agregada a un objeto global de nivel superior llamado “window”. El objeto “window” representa una ventana o una nueva página en el navegador al momento de crearse.

Por ejemplo, se puede crear una variable y luego ver su valor a través del objeto window o simplemente utilizar el nombre de la variable, es lo mismo.

var miVariable = 'hello';
console.log(window.miVariable);
// output: hello

Ahora, igual que en cualquier otro lenguaje de programación, no podría utilizar miVariable si esta no ha sido declarada previamente por lo que obtendremos el error “undefined”.

console.log(window.miVariable);
var miVariable = 'hello';
// output: undefined

Espero que estas breves explicaciones les sirvan de algo.. y como siempre Happy Coding! 😀

Co-fundador de Qbit Mexhico, usuario de linux, Developer en tecnologías web.. Nicaragüense, centro en basketball, primer centro en rugby y pintor los fines de semana. Ortögrafo y ambientalista psicológico (de escritorio).. ese soy yo!

Si te ha servido compártelo y difunde nuestro blog..

Facebook Twitter LinkedIn Google+ Flickr YouTube Skype 

Compartir en...Tweet about this on TwitterPin on Pinterest0Share on LinkedIn0Share on Google+0Share on Facebook0