Hoy · Hoja de ruta
- 1. Aprende: Cómo se guarda un dato, qué tipos existen y qué diferencia hay entre
constylet. - 2. Haz: Modela con variables la ficha de un producto de tu catálogo.
- 3. Comprueba: Sabes decir el tipo de cada valor antes de preguntárselo a la consola.
Antes de empezar · 5 minutos, sin apuntes
- ¿Qué datos tiene un producto de tu proyecto? Escribe cinco.
- ¿Cuáles son texto, cuáles número y cuáles solo pueden ser sí o no?
- ¿Cuáles de ellos cambiarán mientras la página está abierta?
Guardar un valor con un nombre
const nombre = "Teclado mecánico";
const precio = 89.9;
let stock = 12;
Una variable es un nombre para un valor. Se declara una vez y se usa muchas.
| Palabra | Se puede reasignar | Cuándo se usa |
|---|---|---|
const |
No | Por defecto, siempre que el valor no cambie |
let |
Sí | Cuando el valor tiene que cambiar |
var |
Sí | Nunca en código nuevo |
Empieza siempre por const
Declara con const y cámbialo a let solo cuando el propio lenguaje te obligue con un error. Así, al leer el código, un let significa algo: «esto cambia, presta atención».
var no lo usamos porque no respeta los bloques y permite redeclarar la misma variable sin avisar. Aparecerá en código antiguo y en respuestas de IA; sustitúyelo.
Los tipos que vas a usar
const texto = "Teclado"; // string
const numero = 89.9; // number
const disponible = true; // boolean
const sinValor = null; // null: vacío a propósito
let noAsignada; // undefined: todavía no tiene valor
Hay dos más, bigint y symbol, que no usarás en este módulo.
La diferencia entre null y undefined se pregunta mucho y es sencilla: undefined es «nadie le ha dado valor»; null es «alguien decidió que estuviera vacío».
Para preguntar el tipo:
typeof "Teclado" // "string"
typeof 89.9 // "number"
typeof true // "boolean"
typeof undefined // "undefined"
typeof null // "object" ← un error histórico del lenguaje
Textos: comillas y plantillas
const producto = "Teclado";
const unidades = 3;
const linea = "Has elegido " + unidades + " × " + producto;
const mejor = `Has elegido ${unidades} × ${producto}`;
Las plantillas —escritas con acento grave— permiten insertar valores con ${} y ocupar varias líneas. A partir de aquí, para construir texto usamos siempre plantillas: concatenar con + es donde nacen la mitad de los espacios perdidos.
Números: uno solo, y con un aviso
JavaScript tiene un único tipo numérico, en coma flotante. Eso trae una sorpresa clásica:
0.1 + 0.2 // 0.30000000000000004
El comportamiento no constituye un defecto de JavaScript, sino una consecuencia de la representación binaria de los decimales. Con dinero se trabaja en céntimos, con enteros, o se redondea al presentar:
const total = 0.1 + 0.2;
total.toFixed(2); // "0.30" ← ojo: devuelve texto
Number(total.toFixed(2)); // 0.3
Nombrar bien no es cosmética
const p = 89.9; // ¿precio? ¿peso? ¿página?
const precioConIva = 89.9; // se lee solo
En este módulo: camelCase, en castellano o en inglés pero sin mezclar, nombres que digan qué contienen, y MAYUSCULAS_CON_GUION solo para constantes de configuración.
Tarea 2 · La ficha de un producto
En js/main.js, con datos de tu tema:
- Declara seis variables que describan un producto: nombre, precio, categoría, unidades, disponible y descripción.
- Elige
constoletjustificando cada elección en un comentario. - Escribe con una plantilla una línea de resumen legible.
- Calcula el precio con IVA y muéstralo con dos decimales.
- Comprueba con
typeofque cada variable tiene el tipo que esperabas.
const a propósito, lee el error y explica qué protege exactamente.Checkpoint · fin de la sesión 2
- Distingues
constdelety usasconstpor defecto. - Nombras los cinco tipos que vas a usar.
- Construyes texto con plantillas, no con el operador de suma.
- Sabes por qué
0.1 + 0.2no da exactamente0.3.
Antes de cerrar · 2 minutos, sin mirar
- ¿Qué diferencia hay entre
nullyundefined? - ¿Qué devuelve
toFixed(2), un número o un texto? - ¿Por qué no usamos
var?
Ver respuestas
1 · undefined es que no se le ha dado valor; null es un vacío puesto a propósito.
2 · Un texto. Si vas a seguir calculando, conviértelo con Number().
3 · Porque ignora los bloques y permite redeclarar sin avisar, así que oculta errores.