HTML define la estructura y CSS el aspecto, pero ninguno de los dos hace que un menú se despliegue al hacer clic, que un formulario se valide antes de enviarse, o que una parte de la pantalla se actualice sin recargar toda la página. Eso lo aporta JavaScript: el lenguaje de programación que añade comportamiento e interactividad a una web.
Qué tipo de cosas hace posible
Validar un formulario antes de enviarlo, avisando de errores sin necesidad de recargar la página completa. Mostrar u ocultar contenido dinámicamente, como un menú desplegable o una ventana emergente. Actualizar partes concretas de una página con nueva información sin recargarla entera (lo que permite, por ejemplo, que un carrito de compra se actualice al instante). Y crear interfaces complejas de tipo aplicación, donde gran parte de la lógica ocurre directamente en el navegador del usuario.
Del navegador al servidor: un mismo lenguaje, dos usos
JavaScript nació pensado exclusivamente para ejecutarse en el navegador, pero con la aparición de entornos como Node.js, también puede ejecutarse en el servidor, permitiendo que un mismo lenguaje se use tanto para el frontend como para el backend de un proyecto, algo que simplifica bastante la organización de equipos de desarrollo.
Frameworks que facilitan trabajar con él
- React: mantenido por Meta, muy extendido para construir interfaces de usuario complejas.
- Vue: valorado por su curva de aprendizaje más suave frente a otras alternativas.
- Angular: mantenido por Google, más habitual en proyectos grandes de tipo corporativo.
Su relación (no siempre buena) con la velocidad de carga
Un exceso de scripts de JavaScript, especialmente de terceros (chats, píxeles de seguimiento, widgets varios), puede ralentizar considerablemente una página, siendo una de las causas más habituales de un mal resultado en los Core Web Vitals, en particular en la métrica de interactividad (INP).