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