Diccionario

Valor nulo (null)

Un valor especial que indica «aquí no hay nada». Usarlo como si fuera un dato real provoca uno de los errores más comunes al programar.

Muchos lenguajes tienen un valor para «sin valor»: null en Java, C# o JavaScript, None en Python, nil en Go. Si intentas leer una propiedad de algo que es nulo, el programa falla.

Los lenguajes modernos lo hacen explícito: en Kotlin o TypeScript (modo estricto) un tipo que puede ser nulo lleva ? y el compilador obliga a comprobarlo; Rust ni siquiera tiene null y usa Option.

Un ejemplo

usuario.direccion.ciudad falla si el usuario no tiene dirección; usuario.direccion?.ciudad devuelve un valor vacío sin romper el programa.

Por qué importa

El valor nulo sirve para indicar «aquí no hay nada», por ejemplo cuando una búsqueda no encuentra resultado o un campo opcional no se ha rellenado. Es muy práctico, pero también una de las mayores fuentes de errores en producción: intentar usar un dato que resulta ser nulo hace que el programa se detenga.

Por eso muchos lenguajes modernos han buscado alternativas. Kotlin y TypeScript distinguen tipos que admiten nulo de los que no, y Rust prescinde de él y usa Option para representar la ausencia de valor. Aun así, en JavaScript, Java, C# o Python lo encontrarás continuamente.

Confusiones frecuentes

No hay que confundir nulo con cero, con cadena vacía ni con falso: son valores reales, mientras que nulo significa ausencia de valor. En JavaScript, además, hay dos: null, que se asigna a propósito, y undefined, que indica que algo no se ha definido todavía. El error típico es TypeError: Cannot read properties of null o NullPointerException en Java, que aparecen al acceder a un método o propiedad de algo que es nulo.

Preguntas frecuentes

¿Cómo compruebo si algo es nulo?

En JavaScript con valor === null, en Python con valor is None y en Java con valor == null. Con el operador ?. de JavaScript puedes acceder a una propiedad sin fallar si el objeto es nulo.

¿Cómo lo evito?

Comprueba antes de usar el valor, devuelve valores por defecto o lista vacía en lugar de nulo, y usa tipos que obliguen a tratar la ausencia cuando el lenguaje lo permita.