> Tipos de Datos
en JavaScript
Cada valor tiene una identidad. Conocelas.
↓ scroll para continuar
Primitivos vs Objetos
El universo de los datos tiene DOS categorías fundamentales
Primitivos
Valores simples, copiados por valor
let y = x; // copy of the value
y = 99;
// x is still 42
Objetos
Estructuras complejas, manipuladas por referencia
let b = a; // reference copy
b.value = 99;
// a.value is also 99
String
Cadenas de texto — secuencias de unidades de código UTF-16
- › Se declaran con comillas simples o dobles
- › Inmutable — cualquier operación devuelve un NUEVO string
- › Los template literals usan backticks
const saludo = `Hola, ${nombre}!`;
const largo = nombre.length; // 3
nombre[0]; // "A"
// nombre[0] = "B" ❌ not allowed
cada letra ocupa una celda consecutivas en memoria
Number
Un solo tipo para todos los números — enteros y decimales
CLAVE
JS usa number para enteros y números de punto flotante.
CASOS ESPECIALES
NaN — resultado de operación matemática inválida
Infinity — división por cero o desbordamiento
const decimal = 3.14;
const grande = 1e308;
const division = 7 / 2; // 3.5
const entera = Math.floor(7 / 2); // 3
Boolean
El tipo más simple y el más poderoso
"hola".length > 0 // true
"".length > 0 // false
FALSY VALUES — todo esto es falso en un booleano
undefined vs null
La distinción más malinterpretada de JS. Prestá atención.
undefined
Variable declarada pero sin valor asignado
"el sistema dice: no sé qué hay acá"
// nombre === undefined
typeof nombre; // "undefined"
null
Ausencia intencional de valor (lo pusiste vos)
"el programador dice: acá no hay nada, a propósito"
// explicitly empty
typeof usuario; // "object" (!)
EL BUG HISTORICO DE JS
// This bug exists since 1995 and can't be fixed (would break the web)
null == undefined // true (loose)
null === undefined // false (strict) — they are different
Symbol & BigInt
Los dos primitivos más modernos de JS
Symbol
Valor único e irrepetible. Cada Symbol() es diferente a todos los demás, incluso con la misma descripción.
const b = Symbol("id");
a === b; // false (!!!)
typeof a; // "symbol"
// Use: private property keys
BigInt
Para enteros MÁS GRANDES que Number.MAX_SAFE_INTEGER (2^53 - 1). Se escribe con n al final.
42n + 1n; // 43n
// Cannot be mixed with Number
typeof
Tu detector de tipos en runtime
Coercion
Cuando JS convierte tipos en silencio — y te rompe el código
COMPORTAMIENTO INESPERADO
LA SOLUCION: == vs ===
Igualdad débil — convierte tipos antes de comparar
0 == false // true (!!)
null == undefined // true
Igualdad estricta — mismo valor Y mismo tipo
0 === false // false
null === undefined // false
Regla: SIEMPRE usá ===. Usá == solo si sabés exactamente por qué.
REPORTE FINAL
Todos los tipos, de un vistazo
| Tipo | Categoría | typeof | Ejemplo | Nota |
|---|---|---|---|---|
| string | primitivo | "string" | "hola" | Inmutable |
| number | primitivo | "number" | 42, 3.14, NaN | IEEE 754 |
| boolean | primitivo | "boolean" | true / false | Control de flujo |
| undefined | primitivo | "undefined" | let x; | Sin valor asignado |
| null | primitivo | "object" ⚠ | null | Vacío intencional |
| symbol | primitivo | "symbol" | Symbol("id") | Único e irrepetible |
| bigint | primitivo | "bigint" | 9007...n | Enteros grandes |
| object | objeto | "object" | {}, [], null | Por referencia |
| function | objeto | "function" | function() | Objeto especial |
FIN DE SESIÓN // DATOS PROCESADOS CORRECTAMENTE
← VOLVER A PRESENTACIONES