2.1 Las variables son referencias
En JavaScript, las variables son referencias a objetos, no la variable en sí. Esto significa que, cuando creas una variable en JavaScript, solo estás creando una referencia a un objeto en la memoria.
Esta característica del lenguaje tiene importantes consecuencias para el manejo de variables, especialmente al pasar objetos a funciones o asignarlos a otras variables.
Cuando creas una variable y le asignas un valor, JavaScript asigna un objeto en memoria para ese valor y convierte la variable en una referencia a ese objeto. Si asignas una variable a otra, la nueva variable referenciará al mismo objeto que la variable original. Esto significa que los cambios realizados a través de una variable se reflejarán en la otra si el objeto es mutable.
Ejemplo:
let a = [1, 2, 3];
let b = a;
b.push(4);
console.log(a); // Mostrará: [1, 2, 3, 4]
Agregamos el número 4 a la variable b, pero también se agregó a la lista en la variable a, porque en realidad ambas variables son solo referencias al mismo objeto lista [1, 2, 3]
2.2 Tipo undefined
En JavaScript hay dos tipos de datos especiales: null y undefined. Estos tipos a menudo generan preguntas entre los desarrolladores debido a su similitud, pero tienen diferentes propósitos y se utilizan en distintas situaciones. Veamos más a fondo.
Tipo undefined
El tipo undefined representa el valor de una variable que ha sido declarada pero no inicializada. Este valor también se devuelve al acceder a una propiedad inexistente de un objeto o a un elemento de un array que no existe.
Ejemplos
1. Variable no inicializada:
let x;
console.log(x); // undefined
2. Propiedad inexistente de un objeto:
let obj = {};
console.log(obj.property); // undefined
3. Elemento inexistente de un array:
let array = [1, 2, 3];
console.log(array[5]); // undefined
4. Argumento faltante en una función:
function myFunction(a, b) {
console.log(b); // undefined, si se llama como myFunction(1)
}
myFunction(1);
Propiedades de undefined:
undefinedes un tipo de dato y un valortypeof undefineddevuelveundefined
2.3 Tipo null
El tipo null representa la ausencia intencionada de un valor. Este valor se suele usar para inicializar variables que posteriormente se les asignará un objeto, o para limpiar el valor de una variable.
Ejemplos
1. Inicialización de una variable:
let obj = null;
console.log(obj); // null
2. Limpieza del valor de una variable:
let user = { name: "Alice" };
user = null; // ahora user no apunta a un objeto
Propiedades de null:
nulles un valor que representa la ausencia intencionada de un valortypeof nulldevuelveobject, lo que es un error reconocido en el lenguaje JavaScript (en realidadnullno es un objeto)
2.4 Comparación de null y undefined
Aunque null y undefined pueden usarse para indicar la ausencia de valor, se diferencian en su propósito y contexto de uso.
| Propiedad | null | undefined |
|---|---|---|
| Tipo | Tipo primitivo | Tipo primitivo |
| Propósito | Ausencia intencionada de valor | Variable no inicializada |
| Uso | Inicialización de variables, limpieza de valores | Propiedades inexistentes, elementos de arrays |
| Valor por defecto | No | Sí (para variables no inicializadas, parámetros de funciones) |
Ejemplos de uso
1. Inicialización de una variable con un objeto o array:
let myObject = null;
let myArray = null;
2. Comprobación de valores:
let value;
if (value === undefined) {
console.log("La variable no está inicializada.");
}
let result = null;
if (result === null) {
console.log("Ausencia de valor.");
}
3. Limpieza de valores:
let person = { name: "Alice" };
person = null; // Ahora person no apunta a un objeto
4. Comprobación de la existencia de una propiedad:
let obj = {};
if (obj.property === undefined) {
console.log("La propiedad no existe.");
}
Entender las diferencias entre null y undefined en JavaScript es importante para manejar correctamente los valores y prevenir errores en el código.
undefined generalmente indica variables no inicializadas o propiedades inexistentes, mientras que null se utiliza para indicar explícitamente la ausencia de un valor.
El uso adecuado de estos tipos de datos especiales hace que el código sea más claro y predecible.
GO TO FULL VERSION