Esta ruta empieza por el lenguaje y termina con una petición real.
En cada lección carga el ejercicio, escribe tu solución en el
laboratorio y prueba el resultado.
const conserva la referencia; let permite reasignarla. String,
number y boolean representan texto, números y condiciones. typeof
permite observar algunos tipos.
Ahora escribe
Declara un nombre, una edad y una condición. Muestra sus valores y
tipos.
Ver pista
Pon comillas al texto; los números y booleanos no necesitan
comillas.
const temas = ["HTML", "CSS", "JavaScript"];
for (let i = 0; i < temas.length; i++) {
console.log("for:", temas[i]);
}
temas.forEach((tema, indice) => {
console.log("forEach:", indice, tema);
});
LECCIÓN 8 DE 11
Objetos (y así vienen las APIs)
Un objeto agrupa propiedades. Muchas APIs devuelven JSON, que se
interpreta para obtener objetos o arrays de JavaScript. JSON es
texto, no un objeto ya construido.
Ahora escribe
Consulta nombre y ciudad en un objeto; interpreta después un JSON
de ejemplo.
Ver pista
Usa el punto para propiedades y JSON.parse para el texto.
fetch pide un recurso por red. async permite usar await;
response.ok comprueba el estado HTTP y response.json interpreta el
JSON. try/catch maneja fallos.
Ahora escribe
Al pulsar #accion, consulta una tarea ficticia de JSONPlaceholder
y muestra su título.
Ver pista
Usa una función async, comprueba response.ok y captura el error.
Necesitas internet. Solo este ejercicio habilita conexión a
JSONPlaceholder; utiliza datos ficticios y no requiere clave.
fetch no rechaza por sí solo un HTTP 404.
Cada paso acumula lo anterior. Lee la explicación, observa el
resultado y prueba una modificación. El laboratorio adapta los
archivos separados a un marco aislado.
Qué añadimos
Dónde va y en qué orden
Qué deberías ver
Escribe antes de mirar la solución
El editor conserva el programa del paso anterior. Completa la
nueva parte siguiendo el objetivo y pulsa «Aplicar mis cambios».
Observa la consola y prueba los controles de la página.
Ver una pista de código
No necesitas memorizar un fragmento exacto: puede haber otras
soluciones válidas. Al cambiar de paso se carga un nuevo punto
de partida y se descartan las ediciones de este paso.
Consola y comportamiento
Ver código usado en la variante
El navegador normaliza el HTML al analizarlo. La vista previa
incrusta CSS y JavaScript; en tus archivos mantendrás sus
enlaces externos.
console.log("app.js está funcionando");
const boton = document.querySelector("#sumar");
const salida = document.querySelector("#contador");
const mensaje = document.querySelector("#mensaje");
mensaje.textContent = "La página está lista para practicar.";
mensaje.textContent = "La página está lista para practicar.";
console.log("app.js está funcionando");
const boton = document.querySelector("#sumar");
const salida = document.querySelector("#contador");
const mensaje = document.querySelector("#mensaje");
mensaje.textContent = "La página está lista para practicar.";
let puntos = 0;
function mostrarPuntos() {
salida.value = puntos;
}
mostrarPuntos();
let puntos = 0;
function mostrarPuntos() {
salida.value = puntos;
}
mostrarPuntos();
console.log("app.js está funcionando");
const boton = document.querySelector("#sumar");
const salida = document.querySelector("#contador");
const mensaje = document.querySelector("#mensaje");
mensaje.textContent = "La página está lista para practicar.";
let puntos = 0;
function mostrarPuntos() {
salida.value = puntos;
}
mostrarPuntos();
boton.addEventListener("click", () => {
puntos += 1;
mostrarPuntos();
console.log("Puntos:", puntos);
});
document.querySelector("#reiniciar").addEventListener("click", () => {
puntos = 0;
mostrarPuntos();
});
const ideas = [];
const lista = document.querySelector("#tareas");
function mostrarIdeas() {
lista.replaceChildren();
ideas.forEach(idea => {
const elemento = document.createElement("li");
elemento.textContent = idea;
lista.append(elemento);
});
}
mostrarIdeas();
document.querySelector("#tarea-form").addEventListener("submit", event => {
event.preventDefault();
const campo = document.querySelector("#tarea");
const idea = campo.value.trim();
if (!idea) return;
ideas.push(idea);
mostrarIdeas();
campo.value = "";
});
try {
localStorage.setItem("mis-ideas", JSON.stringify(ideas));
console.log("Colección guardada. Para actualizarla, guarda también tras cada cambio.");
} catch (error) {
console.log("Este entorno no permite guardar; la práctica continúa sin persistencia.");
}
try {
localStorage.setItem("mis-ideas", JSON.stringify(ideas));
console.log("Colección guardada. Para actualizarla, guarda también tras cada cambio.");
} catch (error) {
console.log("Este entorno no permite guardar; la práctica continúa sin persistencia.");
}
Un lenguaje de programación con tipos dinámicos. En el navegador
utiliza APIs web, como DOM y fetch, para interactuar con el
documento y la red. Estas APIs no son lo mismo que el lenguaje
ECMAScript.
Datos, decisiones y funciones
const nombre = "Ana";
let puntos = 0;
function sumarPunto() {
puntos += 1;
return `${nombre}: ${puntos}`;
}
Un programa combina valores, condiciones, repeticiones y
funciones. Los nombres deben comunicar su propósito.
Cómo se conecta a la página
<script src="js/app.js" defer></script>
// Dentro de app.js
const boton = document.querySelector("button");
boton.addEventListener("click", () => {
document.querySelector("p").textContent = "Funcionó";
});
defer permite que el HTML se analice antes de
ejecutar el script externo. El evento click no se ejecuta al
registrar la función: se ejecuta cuando ocurre la acción.
Errores que ayudan a aprender
Lee la consola, distingue errores de sintaxis y de ejecución, y
prueba una modificación cada vez. El código que falla necesita una
explicación útil, no una pantalla vacía.
UNA HISTORIA DE INTERACCIÓN
De scripts pequeños a aplicaciones.
1995
Nacimiento en Netscape
Brendan Eich creó el lenguaje que pasó por los nombres Mocha y
LiveScript antes de llamarse JavaScript. Java y JavaScript son
lenguajes distintos.
1997
ECMAScript
Ecma International publicó la primera edición del estándar del
lenguaje.
2009
ECMAScript 5
Añadió herramientas como modo estricto y métodos de arrays
ampliamente utilizados.
2015–hoy
Módulos y evolución continua
ES2015 incorporó let, const, clases, promesas y módulos. TC39
continúa desarrollando nuevas características; los motores
implementan el estándar.
OBSERVA EL ESTADO
Un evento cambia un valor.
Contador interactivo
El valor cambia en JavaScript; CSS conserva el estilo y HTML
conserva la estructura.
Conceptos del lenguaje, métodos habituales y APIs web importantes.
No existe una lista de “etiquetas JavaScript”: se estudian
declaraciones, operadores, funciones, objetos y métodos.
letBases
Declara una variable que puede recibir otro valor.
Edita el ejemplo y pulsa Ejecutar. El resultado y el código
permanecen separados.
Código editable
Resultado en el navegador
Vista previa
Consola del ejemplo
Solo ejecuta código que entiendas. La vista previa está aislada del
sitio. Los cambios del editor no se guardan al cerrar la página.
Una petición también necesita estados.
Al consultar una API, piensa en carga, éxito, ausencia de resultados y
error. La interfaz debe explicar cada estado. Este es un patrón de
referencia; no necesita una petición externa para practicar el
laboratorio.
async function cargarDatos() {
mensaje.textContent = "Cargando…";
try {
const response = await fetch("datos.json");
if (!response.ok) throw new Error("No disponible");
const datos = await response.json();
mensaje.textContent = `${datos.length} resultados`;
} catch (error) {
mensaje.textContent = "No se pudo cargar. Inténtalo de nuevo.";
}
}