Sobes.tech
Junior

¿Puedes explicar con más detalle las diferencias entre null y undefined en JavaScript?

sobes.tech AI

Respuesta de la IA

  • undefined:

    • Se asigna a variables que han sido declaradas pero no inicializadas con un valor.
    • Es el valor predeterminado para los parámetros de funciones a los que no se les han pasado argumentos.
    • Se obtiene al intentar acceder a una propiedad o elemento de matriz que no existe.
    • Tipo de dato — undefined.
  • null:

    • Es un valor especial que se asigna explícitamente a una variable para indicar "ausencia de valor".
    • Representa la ausencia intencionada de cualquier objeto o valor primitivo.
    • Tipo de dato — object (esto es un error histórico en JavaScript, pero así es).

Las principales diferencias en la tabla:

Característica undefined null
Origen Implícito (por defecto) Explícito (asignado por el desarrollador)
Propósito Declarado, pero no asignado un valor Ausencia intencionada de valor
Tipo de dato (typeof) undefined object
Contexto booleano false false
Igualdad (==) null == undefined (true) null == undefined (true)
Igualdad (===) null === undefined (false) null === undefined (false)

Ejemplo:

let a; // Declarada, pero no inicializada -> undefined
console.log(a); // undefined

const obj = {};
console.log(obj.prop); // Acceso a propiedad no existente -> undefined

function greet(name) {
  console.log(name);
}
greet(); // Parámetro name no pasado -> undefined

let b = null; // Asignado explícitamente null
console.log(b); // null

let c = {};
c.data = null; // A la propiedad data se le asigna null
console.log(c.data); // null

console.log(typeof a); // undefined
console.log(typeof b); // object
console.log(null == undefined); // true
console.log(null === undefined); // false