Unidad 1: Fundamentos Avanzados de JavaScript
Objetivo: Profundizar en las características clave del lenguaje JavaScript y su uso en aplicaciones modernas.
1.1 Diferencias entre var, let y const
¿Qué vamos a aprender?
En este apartado conoceremos las diferencias entre var, let y const, tres formas de declarar variables en JavaScript. Comprenderemos su ámbito, si pueden ser reasignadas y cómo el hoisting afecta su comportamiento.
Ámbito y Uso Correcto de Cada Uno
JavaScript permite declarar variables usando var, let y const, pero cada una tiene diferencias importantes:
| Tipo | Ámbito | Reasignable | Hoisting |
|---|---|---|---|
var |
Función | ✅ Sí | ✅ Se mueve al inicio con undefined |
let |
Bloque | ✅ Sí | ❌ No se inicializa automáticamente |
const |
Bloque | ❌ No | ❌ No se inicializa automáticamente |
Ejemplo de var, let y const
var tiene ámbito de función, por lo que la variable x está disponible fuera del bloque if. En cambio, let tiene ámbito de bloque y provoca un error al intentar acceder a y fuera del if.
Hoisting y Problemas Comunes
El Hoisting es un comportamiento de JavaScript que mueve las declaraciones de variables y funciones al inicio del ámbito. Esto puede causar problemas si no se entiende correctamente.
Ejemplo de Hoisting con var y let
var es movida al inicio y su valor es undefined antes de la asignación. let no permite el acceso antes de su declaración, lo que ayuda a evitar errores.
Ejercicios
Practica con var, let y const
- Declara una variable con
var,letyconsty prueba a reasignarlas. ¿Qué sucede? - Crea un
forconvary otro conlet. Accede a las variables fuera del bucle y analiza el resultado.
1.2 Funciones de Flecha (=>) y Desestructuración de Objetos y Arrays
¿Qué vamos a aprender?
Aprenderemos cómo las funciones de flecha simplifican la sintaxis y eliminan el problema del this. También veremos cómo extraer valores de objetos y arrays de manera eficiente con la desestructuración.
Funciones de Flecha (=>)
Las funcines de flecha (arrow functions) son una forma más concisa de escribir funciones en JavaScript. Se definen con la sintaxis () => {} y tienen varias ventajas:
- Sintaxis más corta: Elimina la necesidad de
functionyreturn. thisconsistente: No cambia el valor dethisdentro de la función.- Útiles para funciones anónimas: Simplifica el código en callbacks y eventos.
Aparecen en ES6 y son muy comunes en aplicaciones modernas.
Conversión de función tradicional a función de flecha
La función de flecha reduce el código eliminando la necesidad de function y return si es de una sola línea. Si es de más de una línea, se deben usar llaves {} y return.
Desestructuración de Objetos y Arrays
Ejemplo de desestructuración de objetos y arrays
Operador Spread (...)
El operador spread (...) permite combinar arrays o objetos de forma sencilla. Se usa para copiar elementos de un array o un objeto en otro.
Ejemplo de operador spread
spread permite combinar dos arrays en uno solo de forma rápida y sencilla.
Ejercicios
Practica con funciones de flecha y desestructuración
- Convierte una función tradicional que multipique dos números una función de flecha.
- Crea una función que reciba dos arrays y los combine en uno solo usando el operador
spread. - A partir del objeto
coche{marca: " Toyota", modelo: "Corolla" }, desestructura las propiedadesmarcaymodeloy muéstralas en la consola.
Solución
1.3 Modularización con import/export
¿Qué vamos a aprender?
En este apartado aprenderemos cómo estructurar el código en módulos reutilizables utilizando import y export. Modularizar nuestro código nos permitirá mantenerlo organizado, facilitar su mantenimiento y promover la reutilización de funciones y constantes en diferentes partes de nuestro proyecto.
Uso de export e import en JavaScript
JavaScript permite dividir el código en módulos, archivos individuales que exportan y utilizan funciones, variables u objetos.
Ejemplo de Exportación y Importación de Múltiples Elementos
| math.js | |
|---|---|
| app.js | |
|---|---|
math.js exporta varias funciones y constantes, que luego se importan en app.js.
Uso de export default
Si solo queremos exportar un elemento principal de un archivo, usamos export default.
Ejemplo de export default
| operaciones.js | |
|---|---|
| app.js | |
|---|---|
{}. Además, podemos cambiar el nombre de la función al importarla si lo deseamos.
Ejemplo Completo con Exportación Mixta
Podemos combinar export y export default en el mismo archivo.
Ejemplo de Exportación Mixta
| calculadora.js | |
|---|---|
| app.js | |
|---|---|
potencia se importa sin llaves {} porque es un export default, mientras que dividir y GRAVEDAD se importan con llaves {}.
También podemos crear las funciones y constantes en un solo archivo y exportarlas al final. Cuando el módulo es largo es una manera de mantener el código más organizado.
Ejemplo de Exportación al Final del Archivo
| operaciones.js | |
|---|---|
Ejercicios
Practica con módulos en JavaScript
- Crea dos archivos JavaScript:
modulo.jsymain.js. - En
modulo.js, exporta dos funciones (saludo y despedida con el parámetro nombre) y una constante con el nombre de la aplicación. - En
main.js, importa estos elementos y úsalos enconsole.log().
Solución
Con este apartado, hemos aprendido cómo dividir nuestro código en módulos reutilizables, mejorando la organización y el mantenimiento de nuestros proyectos en JavaScript.