Junior
¿En qué consiste la diferencia entre los diferentes tipos de datos?
sobes.tech AI
Respuesta de la IA
En JavaScript, los datos se dividen en tipos primitivos y objetos.
Tipos primitivos:
- String: Secuencia de caracteres. Inmutable.
- Number: Números, incluyendo enteros y de punto flotante, así como
Infinity,-InfinityyNaN. - Boolean: Valor lógico (
trueofalse). - Null: Valor especial que representa la ausencia de un objeto.
- Undefined: Valor de una variable a la que no se le ha asignado un valor.
- Symbol: Tipo primitivo único e inmutable, utilizado para identificadores de propiedades de objetos.
- BigInt: Números enteros de longitud arbitraria.
Objetos:
- Object: Colección de pares clave-valor. Mutable. Ejemplos: arreglos, funciones, expresiones regulares, fechas.
Diferencias principales:
- Mutabilidad: Los tipos primitivos son inmutables, es decir, no se puede cambiar su valor directamente. Al intentar modificarlo, se crea una copia nueva. Los objetos son mutables, sus propiedades pueden añadirse, eliminarse y modificarse.
- Paso por valor/por referencia: Los tipos primitivos se pasan por valor (se copia el valor mismo). Los objetos se pasan por referencia (se copia la referencia al lugar en memoria donde se almacena el objeto).
- Comparación: Los tipos primitivos se comparan por valor. Los objetos se comparan por referencia (dos variables que apuntan al mismo objeto en memoria).
// Ejemplos
let str1 = "hello";
let str2 = str1; // str2 obtiene una copia del valor de str1
str1 = "world"; // Se crea una nueva cadena "world" para str1
console.log(str2); // "hello" - str2 no cambió
let obj1 = { name: "Alice" };
let obj2 = obj1; // obj2 obtiene la referencia al mismo objeto que obj1
obj1.name = "Bob"; // Se modifica la propiedad del objeto al que apuntan ambas variables
console.log(obj2.name); // "Bob" - obj2 cambió
let num1 = 10;
let num2 = 10;
console.log(num1 === num2); // true - se comparan los valores
let objA = { value: 1 };
let objB = { value: 1 };
console.log(objA === objB); // false - se comparan las referencias (apuntan a objetos diferentes aunque tengan el mismo contenido)
Tabla de diferencias:
| Característica | Tipos primitivos | Objetos |
|---|---|---|
| Mutabilidad | Inmutables | Mutables |
| Paso | Por valor | Por referencia |
| Comparación | Por valor | Por referencia |
| Almacenamiento | Directamente en la variable | Referencia a la ubicación en memoria |
| Tipos de datos | String, Number, Boolean, Null, Undefined, Symbol, BigInt | Objeto (incluyendo arreglos, funciones, etc.) |