Saltar al contenido
Curso de JavaScript
Todos los cursos Ir al ejercicio →

Variables y tipos de datos

  • ⏱ 40 minutos
  • 📶 Nivel: principiante
  • 🧩 Incluye ejercicio

💡 🎯 Al terminar esta lección podrás…

  • Declarar variables con const y let y nombrarlas bien.
  • Reconocer los tipos de datos y consultar su tipo con typeof.
  • Manipular texto con plantillas y métodos de string.
  • Operar con números y convertir tipos sin sorpresas.

1.Variables: cajas con nombre

Una variable es un espacio con nombre donde guardas un valor para usarlo después. Es como una caja con una etiqueta: puedes mirar qué hay dentro, cambiarlo y usarlo cuantas veces quieras.

Crear y usar variables
let edad = 25;                    // la creas con let
const pais = "México";            // la creas con const
console.log(edad, pais);          // 25 "México"

edad = 26;                        // let permite cambiar el valor
console.log("Ahora tengo", edad);
PalabraSe puede reasignarCuándo usarla
constNoPor defecto. Para todo lo que no cambia
letSíCuando el valor tiene que cambiar (un contador, un total)
varSíNo la uses. Es la forma antigua y tiene comportamientos confusos
▶ Variables en acción
Consola

💡 Consejo · Empieza siempre con const

Usa const y cámbialo a let solo cuando el compilador te lo exija. Así sabes de un vistazo qué valores nunca cambian, y tu código tiene menos sorpresas.

2.Cómo nombrar variables

BienMalPor qué
precioTotalxNo dice nada
nombreClientenombre clienteNo admite espacios
pagina22paginaNo puede empezar con número
esMayorDeEdadmayor?No admite signos como ?
let totallet letPalabra reservada

3.Los tipos de datos

Cada valor tiene un tipo. El tipo decide qué puedes hacer con él: sumar números, juntar textos, decidir con verdadero o falso…

TipoQué guardaEjemplos
stringTexto"hola", 'adiós', ` plantilla `
numberNúmeros (enteros y decimales)42, 3.14, -7, NaN, Infinity
booleanVerdadero o falsotrue, false
undefinedVariable creada sin valorlet x;
null«Nada» a propósitolet resultado = null;
bigintEnteros enormes9007199254740993n
symbolIdentificadores únicos(uso avanzado)
objectColecciones de datos (arrays, objetos…)[1, 2, 3], { nombre: "Ana" }

Para saber el tipo de un valor existe el operador typeof:

▶ typeof
Consola

📌 Nota · JavaScript es de tipado dinámico

No declaras el tipo de una variable: JavaScript lo deduce del valor, y una misma variable puede cambiar de tipo con el tiempo. Es flexible, pero obliga a ser cuidadoso: muchos errores vienen de tipos que no son los que creías.

4.Trabajar con texto

Strings: lo esencial
const nombre = "Ana";
const apellido = 'Pérez';

console.log(nombre + " " + apellido);        // unir con +
console.log(`Hola, ${nombre} ${apellido}`);  // plantilla de texto (¡mejor!)
console.log(nombre.length);                  // 3  (cantidad de caracteres)
console.log(nombre[0]);                      // "A" (primer carácter)

Las plantillas de texto (comillas invertidas ` `) permiten **insertar valores** con ${…}` y escribir varias líneas. Son la forma más cómoda de componer mensajes.

MétodoQué haceEjemplo → resultado
lengthCantidad de caracteres"hola".length → 4
toUpperCase() / toLowerCase()Mayúsculas / minúsculas"hola".toUpperCase() → "HOLA"
trim()Quita espacios de los extremos" hola ".trim() → "hola"
includes(texto)¿Contiene…?"manzana".includes("zan") → true
startsWith() / endsWith()¿Empieza / termina con…?"hola".startsWith("ho") → true
indexOf(texto)Posición de la primera aparición (o -1)"hola".indexOf("l") → 2
slice(inicio, fin)Extrae un fragmento"abcdef".slice(1, 4) → "bcd"
replace(a, b)Reemplaza la primera aparición"a-b-c".replace("-", "+") → "a+b-c"
replaceAll(a, b)Reemplaza todas"a-b-c".replaceAll("-", "+") → "a+b+c"
split(sep)Divide en un array"a,b,c".split(",") → ["a","b","c"]
repeat(n)Repite el texto"ab".repeat(3) → "ababab"
padStart(n, c)Rellena por la izquierda"7".padStart(2, "0") → "07"
▶ Prueba los métodos de texto
Consola

⚠️ Importante · Los strings no se modifican

Los métodos de texto devuelven un texto nuevo, no cambian el original. frase.toUpperCase(); por sí solo no hace nada visible: debes guardar o usar el resultado (const grande = frase.toUpperCase();).

5.Trabajar con números

OperaciónEjemploResultado
Suma, resta5 + 3, 5 - 38, 2
Multiplicación, división5 * 3, 10 / 415, 2.5
Resto (módulo)10 % 31
Potencia2 ** 38
Incrementarx++, x += 5suma 1 / suma 5 a x
FunciónQué haceEjemplo
Math.round(n)RedondeaMath.round(2.6) → 3
Math.floor(n) / Math.ceil(n)Hacia abajo / arribaMath.floor(2.9) → 2
Math.max(…) / Math.min(…)El mayor / menorMath.max(3, 9, 5) → 9
Math.random()Aleatorio entre 0 y 1Math.floor(Math.random() * 6) + 1 → un dado
n.toFixed(2)Texto con 2 decimales(3.14159).toFixed(2) → "3.14"
Number.isInteger(n)¿Es entero?Number.isInteger(4.0) → true
▶ Números
Consola

📌 Nota · ¿Por qué 0.1 + 0.2 no da 0.3?

Las computadoras guardan los decimales en binario y algunos no se pueden representar con exactitud. No es un error de JavaScript: pasa en casi todos los lenguajes. Para dinero, redondea con toFixed() o trabaja en centavos (números enteros).

6.Conversión de tipos

Cuando recibes datos de un formulario o de internet, casi siempre son texto, aunque parezcan números. Hay que convertirlos:

FunciónConvierte aEjemplos
Number(x)NúmeroNumber("42") → 42 · Number("hola") → NaN
parseInt(x)EnteroparseInt("42px") → 42
parseFloat(x)DecimalparseFloat("3.5kg") → 3.5
String(x)TextoString(42) → "42"
Boolean(x)true / falseBoolean("") → false · Boolean("a") → true
▶ El peligro de sumar textos
Consola

⚠️ Importante · El operador + con texto

Si uno de los lados de + es texto, JavaScript concatena en vez de sumar: "5" + 3 da "53". Convierte antes con Number(). Con -, * y / sí convierte solo, pero conviene ser explícito.

🔍 Ejemplo · Los valores «falsos»

Se comportan como false al convertirlos a booleano: false, 0, "" (texto vacío), null, undefined y NaN. Todo lo demás es «verdadero», incluso "0" y []. Lo usarás en la próxima lección para tomar decisiones.

7.Errores frecuentes

📒 Apuntes para llevar

  • Una variable guarda un valor con nombre. Usa const por defecto, let si debe cambiar y nunca var.
  • Los nombres van en camelCase, no empiezan con número ni usan palabras reservadas, y deben decir qué guardan.
  • Tipos: string, number, boolean, undefined, null, bigint, symbol y object. typeof consulta el tipo.
  • Las plantillas de texto ` Hola ${nombre} ` insertan valores y son la mejor forma de componer mensajes.
  • Los métodos de texto (toUpperCase, includes, slice, split, trim…) devuelven valores nuevos.
  • Math.round/floor/ceil/random y toFixed() ayudan con los números; cuidado con los decimales.
  • Number(), parseInt(), parseFloat(), String() y Boolean() convierten tipos.
  • "5" + 3 concatena: convierte siempre los datos de un formulario antes de operar.

8.Glosario

TérminoSignificado
VariableEspacio con nombre donde se guarda un valor.
const / letDeclaran variables: const no se reasigna, let sí.
Tipo de datoCategoría de un valor: texto, número, booleano…
Plantilla de textoTexto con comillas invertidas que admite ${} y varias líneas.
typeofOperador que devuelve el tipo de un valor.
NaN«Not a Number»: resultado de una operación numérica inválida.
ConcatenarUnir textos uno tras otro.
ConversiónCambiar un valor de un tipo a otro.

🧠 Comprueba lo aprendido

Elige una respuesta en cada pregunta. Verás al instante si acertaste y por qué.

¿Cuál es la mejor práctica para declarar una variable que no cambiará?

¿Qué muestra console.log("5" + 3)?

¿Cuál de estos es un nombre de variable válido?

¿Qué devuelve Number("hola")?

¿Qué hace "Hola".toUpperCase() sobre la variable original?

Tu progreso se guarda en este navegador y se refleja en el índice del curso.

💡 🚀 ¡Ahora te toca!

La práctica fija lo aprendido. Pasa al ejercicio de esta lección.

Ir al ejercicio