¿Cuál es la diferencia entre Null y Undefined en JavaScript?

Portada de artículo

JavaScript es bastante confuso cuando se trata de una variable que no tiene un valor porque puede ser tanto null como undefined. Esto genera mucha confusión, por lo que en este artículo analizaré las diferencias que existen entre null y undefined.

Null y Undefined

Para empezar, me gustaría explicar qué tienen en común null y undefined ya que son muy similares. Tanto null como undefined significan que no hay valor. Si una variable se establece en null o undefined, no tiene valor y si una función devuelve null oundefined, entonces nos está diciendo que no tiene ningún valor para devolver. Lo más probable es que ya lo entiendas.

Estos valores son en realidad tan similares que se consideran iguales cuando se comparan con dobles iguales (==), mas no iguales con triple igual (===).

console.log(null == undefined);
// true
console.log(null === undefined);
// false

Debido a esto, cuando quiero verificar si una variable tiene un valor o no, casi siempre uso la comparación doble igual, ya que devolverá verdadero si la variable es null o undefined.

Sin embargo, aquí es donde terminan las similitudes.

Null

Es más fácil comenzar con null cuando se comparan las diferencias entre null y undefined ya quenull es muy sencillo. Si una variable es null, significa que la variable no tiene valor y que el programador la estableció explícitamente para que no tuviera valor. Una variable nunca será null a menos que en algún lugar del código un programador establezca una variable en null.

Es importante saber esto, ya que cuando veas un valor null , sabrás que el programador que escribió ese código te está diciendo que no hay ningún valor explícitamente. Un gran ejemplo de donde null es útil es algo así como una función de búsqueda que consulta una base de datos en busca de una entrada. Si no existe ninguna entrada, tiene más sentido devolver null ya que se está indicando que no se ha encontrado ningún valor.

Undefined

Por otro lado, undefined significa que no hay ningún valor porque todavía no se ha establecido ningún valor. Por ejemplo, si creas una variable y no le asignas un valor, entonces estará undefined.

let a;

console.log(a);
// undefined

Donde esto se vuelve un poco confuso es el hecho de que se puede establecer una variable con valor de undefined.

let a = null;

console.log(a);
// null

a = undefined;
console.log(a);
// undefined

Una razón por la cual querrías hacer esto es esencialmente restablecer o resetear una variable. Al establecer una variable en undefined, se está transmitiendo el mensaje de que la variable ya no contiene información útil, mientras que si el valor es null, se está diciendo específicamente que el resultado de alguna acción no tiene valor.

Técnicamente, ambos no indican ningún valor, pero transmiten ese mensaje de formas ligeramente diferentes.

Conclusión

En general, no es muy importante conocer las diferencias entre null y undefined, con la salvedad de saber cómo interactúan con dobles y triples iguales, pero si eres diligente en el uso de null and undefined, puedes escribir un código más limpio que puede hacer uso de la naturaleza implícita / explícita de null and undefined.

Acerca del autor

¡Hola! Me llamo Adrián, pero todos me conocen como Lasfito. Soy desarrollador front-end y escribo artículos y tutoriales sobre JavaScript, desarrollo web y diseño.

¿Dudas o comentarios?

Únete al Discord oficial

¿Alguna errata?

Si encuentras alguna errata en este artículo, por favor, no dudes en levantar un pull request en el repositorio de GitHub.