Nota: Esto es un laboratorio donde llevo a cabo investigaciones sobre temas que no acabo de entender relacionados con la tecnología, por tanto, puede que haya algún error semántico, si hay algo que te chirría déjame un tweet. ¡Merci!

¿Qué es null?

El valor null en Javascript es un literal que representa un valor vacio. Podemos usar null para indicar que una propiedad en un objecto no contiene valor. Normalmente se usa cuando una propiedad está preparada para contener un valor pero todavía no está disponible.

¿null y undefined son lo mismo?

Hay un ejemplo en stackoverflow que representa muy bien lo que es null y la diferencia frente a undefined. Lo traduzco de allí.

Dialogando con Javascript

(nombre es undefined)

Tu: ¿Qué es nombre?
Javascript: Eh? Nombre? No sé de qué estas hablando. Nunca antes has mencionado ningún nombre. Te estás viendo con algún otro lenguaje de scripting en la parte de cliente?

(nombre es null)

Tu: ¿Qué es nombre?
Javascript: No lo sé

undefined se usa para decirle a Javascript que algo falta, mientras que null le dice que un valor es esperado, puede que no esté disponible aún, pero se espera.

null == undefined //–> true ¿qué, cómo…?

Si comparo un valor null con un undefined me dice que son lo mismo, pero…

var  d = null
var c;
typeof d
//--> "object"
typeof c
//--> "undefined"
d == c
//--> true
d === c
//--> false

…es porque el operador == no comprueba el tipo de la variable, por eso “d” y “c” son iguales. Para comparar dos variables teniendo en cuenta el tipo tenemos que usar el triple operador === y entonces sí nos devolverá un false como toca.

¡Feliz código!