Tipos de Datos Primitivos y typeof
Conoce los 7 tipos primitivos de JavaScript, las estructuras de referencia (objetos y arrays) y el uso del operador typeof para inspección en tiempo de ejecución.
Tipado Dinámico en JavaScript
JavaScript es un lenguaje de tipado dinámico y débil. Esto significa que una variable no está atada a un tipo de dato fijo: una variable puede almacenar un número y más adelante almacenar un texto.
Los 7 Tipos de Datos Primitivos
Los tipos primitivos representan valores inmutables y no son objetos:
| Tipo | Descripción | Ejemplo |
|---|---|---|
string |
Cadenas de caracteres de texto. | "Kilopolis" o 'Frontend' |
number |
Números enteros y con decimales (formato de 64 bits IEEE 754). | 42, 3.1416, NaN |
boolean |
Valor de verdad lógico: solo dos opciones. | true o false |
undefined |
Una variable declarada a la que aún no se le ha asignado ningún valor. | let x; (x es undefined) |
null |
Representa intencionalmente la ausencia de cualquier objeto o valor. | let usuario = null; |
bigint |
Enteros gigantescos que superan el límite seguro de Number (2^53 - 1). | 9007199254740991n |
symbol |
Identificador único e inmutable para claves de objetos. | Symbol("id") |
El Operador typeof
Puedes consultar el tipo de cualquier variable o expresión usando el operador typeof:
typeof "Hola" // "string"
typeof 100 // "number"
typeof true // "boolean"
typeof undefined // "undefined"
typeof { id: 1 } // "object"
typeof [1, 2, 3] // "object" (los arrays son un subtipo de objeto en JS)
typeof null // "object" (famoso bug histórico de JS conservado por compatibilidad)
⚡ Inspección de Tipos con typeof en Vivo
Observa cómo evalúa JavaScript el tipo de dato de diferentes valores y variables:
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<title>Tipos de Datos en JavaScript</title>
<style>
body { font-family: Arial, Helvetica, sans-serif; padding: 25px; background: #f8fafc; }
.card-tipos { max-width: 540px; background: white; border: 1px solid #cbd5e1; border-radius: 8px; padding: 20px; }
.tabla-inspeccion { width: 100%; border-collapse: collapse; margin-top: 15px; }
.tabla-inspeccion th, .tabla-inspeccion td { border: 1px solid #e2e8f0; padding: 8px 12px; font-size: 0.9rem; }
.tabla-inspeccion th { background: #f1f5f9; text-align: left; }
.badge-tipo { font-weight: bold; color: #0284c7; font-family: monospace; }
</style>
</head>
<body>
<div class="card-tipos">
<h3 style="margin-top: 0; color: #0f172a;">Evaluación Dinámica de Tipos</h3>
<p style="font-size: 0.9rem; color: #64748b;">
Los siguientes valores son evaluados automáticamente por el motor de JavaScript con <code>typeof</code>:
</p>
<table class="tabla-inspeccion">
<thead>
<tr>
<th>Valor Evaluado</th>
<th>Resultado de typeof</th>
</tr>
</thead>
<tbody id="cuerpo-tabla">
<!-- Generado dinámicamente -->
</tbody>
</table>
<script>
const muestras = [
{ valor: "¡Hola Mundo!", texto: '"¡Hola Mundo!"' },
{ valor: 2026, texto: '2026' },
{ valor: true, texto: 'true' },
{ valor: undefined, texto: 'undefined' },
{ valor: null, texto: 'null' },
{ valor: { curso: "JS", nivel: "Pro" }, texto: '{ curso: "JS" }' },
{ valor: ["HTML", "CSS", "JS"], texto: '["HTML", "CSS", "JS"]' }
];
const tbody = document.getElementById('cuerpo-tabla');
muestras.forEach(item => {
const fila = document.createElement('tr');
fila.innerHTML = `
<td><code>${item.texto}</code></td>
<td class="badge-tipo">${typeof item.valor}</td>
`;
tbody.appendChild(fila);
});
</script>
</div>
</body>
</html>
¿Tienes dudas con este tema?
Sócrates AI puede darte analogías y explicarte este código paso a paso.🚀 ¿Quieres dominar Manual Completo de JavaScript ES6+ y crear proyectos reales?
Aprende arquitectura limpia, desarrollo web moderno, buenas prácticas y despliegue en producción con nuestro Bootcamp Fullstack Developer con mentorías en vivo.
🏛️ Autoría y Propiedad Intelectual: Obra educativa original de David Amador para Kilopolis Academia (Solucionáticos), estructurada sobre las especificaciones y estándares abiertos del W3C, el estándar vivo de WHATWG y la documentación oficial de código abierto. © Todos los derechos reservados.