🕐
Date, Math, Temporizador y
Manejos de Errores
Temporizador
🔹 Fórmula general
setTimeout
setTimeout(funcion, tiempoEnMilisegundos);
funcion → función que se ejecutará una sola vez después del tiempo.
tiempoEnMilisegundos → tiempo que espera antes de ejecutar la función.
Ejemplo:
setTimeout(() => {
[Link]("Esta función se ejecuta después de 3 segundo
s");
}, 3000);
setInterval
setInterval(funcion, tiempoEnMilisegundos);
funcion → función que se ejecutará repetidamente cada intervalo de
tiempo.
tiempoEnMilisegundos → intervalo de repetición.
Ejemplo:
Date, Math, Temporizador y Manejos de Errores 1
let intervalo = setInterval(() => {
[Link]("Esta función se ejecuta cada segundo");
}, 1000);
Para detenerlo se usa clearInterval(intervalo);
🔹 Ejemplo práctico: Conteo regresivo
let numero = 5;
let intervalo = setInterval(() => {
[Link](`Lanzamiento en ${numero}`);
numero--;
if (numero === 0) {
clearInterval(intervalo);
[Link]("¡Despegue!");
}
}, 1000);
Salida esperada:
Lanzamiento en 5
Lanzamiento en 4
Lanzamiento en 3
Lanzamiento en 2
Lanzamiento en 1
¡Despegue!
✅ Notas importantes:
1. Las funciones no se ejecutan directamente, se pasan como referencia (sin
paréntesis).
2. setTimeout → una vez.
3. setInterval → repetidamente hasta usar clearInterval .
Math
Date, Math, Temporizador y Manejos de Errores 2
Operaciones matemáticas básicas:
// Ejemplo de operaciones matemáticas básicas
let num1 = 10;
let num2 = 5;
[Link]("Potencia:", [Link](num1, num2)); // Potencia
[Link]("Raíz cuadrada de 25:", [Link](25)); // Raíz
cuadrada
[Link]("Valor absoluto de -10:", [Link](-10)); // Va
lor absoluto
[Link]("Redondeo de 3.7:", [Link](3.7)); // Redond
eo
floor vs round
round: Redondea un número al entero más cercano.
floor: Redondea un número hacia abajo al entero más cercano (siempre
hacia el número más pequeño).
[Link]([Link](4.9)); // Salida: 4
[Link]([Link](7.2)); // Salida: 7
[Link]([Link](-3.8)); // Salida: -4
[Link]([Link](4.9)); // Salida: 5
[Link]([Link](7.2)); // Salida: 7
[Link]([Link](-3.8)); // Salida: -4
Generación de números aleatorios:
// Ejemplo de generación de números aleatorios
let randomNumber = [Link](); // Genera un número aleat
orio entre 0 y 1 (exclusivo)
[Link]("Número aleatorio entre 0 y 1:", randomNumber);
// Genera un número aleatorio entre 1 y 10
Date, Math, Temporizador y Manejos de Errores 3
let randomInt = [Link]([Link]() * 10) + 1;
[Link]("Número aleatorio entre 1 y 10:", randomInt);
// Genera un número aleatorio entre un rango específico
function getRandomNumber(min, max) {
return [Link]([Link]() * (max - min + 1)) + min;
}
[Link]("Número aleatorio entre 5 y 15:", getRandomNumb
er(5, 15));
Aleatorio para candena:
const generateRandomString = (length) => {
const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghi
jklmnopqrstuvwxyz0123456789';
let result = '';
for (let i = 0; i < length; i++) {
const randomIndex = [Link]([Link]() * char
[Link]);
result += [Link](randomIndex);
}
return result;
};
// Genera una cadena aleatoria de longitud 10
[Link](generateRandomString(10)); // Ejemplo de salid
a: "h2R7kPq8Xd"
1. Usando el operador de acceso a elementos [] :
let str = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuv
wxyz0123456789";
let randomIndex = [Link]([Link]() * [Link]);
Date, Math, Temporizador y Manejos de Errores 4
let randomChar = str[randomIndex]; //Acceso directo al cará
cter en la posición aleatoria
2. Usando el método charAt(index) :
let str = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuv
wxyz0123456789";
let randomIndex = [Link]([Link]() * [Link]);
let randomChar = [Link](randomIndex); //Obtener el cará
cter en la posición aleatoria
Date
📅 Date en JavaScript
🔹 Crear un objeto Date
let ahora = new Date(); // Fecha y hora actuales
[Link](ahora);
También puedes crear con parámetros:
let fecha1 = new Date("2025-08-17");
let fecha2 = new Date(2025, 7, 17); // Año, Mes (0-11), Día
let fecha3 = new Date(2025, 7, 17, 15, 30, 0); // Año, mes,
día, hora, minuto, segundo
⚠️ Ojo → los meses empiezan en 0 (enero) hasta 11 (diciembre).
🔹 Métodos importantes
let hoy = new Date();
Date, Math, Temporizador y Manejos de Errores 5
[Link]("Año:", [Link]());
[Link]("Mes:", [Link]() + 1); // +1 porque enero
es 0
[Link]("Día:", [Link]());
[Link]("Hora:", [Link]());
[Link]("Minutos:", [Link]());
[Link]("Segundos:", [Link]());
[Link]("Día de la semana:", [Link]()); // 0=Doming
o, 6=Sábado
🔹 Operaciones con fechas
1. Sumar/restar días
let fecha = new Date();
[Link]([Link]() + 7); // +7 días
[Link]("Dentro de una semana:", fecha);
1. Comparar fechas
let f1 = new Date("2025-01-01");
let f2 = new Date("2025-12-31");
[Link](f1 < f2); // true
🔹 Timestamps
El timestamp es la cantidad de milisegundos desde el 1 de enero de 1970
(UTC).
let ahora = new Date();
[Link]([Link]()); // milisegundos desde 1970
Date, Math, Temporizador y Manejos de Errores 6
[Link]([Link]()); // igual que getTime()
🔹 Ejemplo práctico: Temporizador con Date
let inicio = new Date();
setTimeout(() => {
let fin = new Date();
let diferencia = (fin - inicio) / 1000; // en segundos
[Link](`Pasaron ${diferencia} segundos`);
}, 3000);
🔹 Manejo de Errores con try...catch
1️⃣ Conceptos clave
throw : Lanza un error en cualquier punto del código.
Cuando se ejecuta, detiene el flujo normal de esa función.
Todo lo que esté después del throw dentro de la misma función no se
ejecuta.
Flujo normal: Es la secuencia de ejecución habitual de las líneas de código.
: Permite “atrapar” errores lanzados con
try…catch throw y manejar la
situación sin que el programa se detenga.
Propagación de errores (subida por la pila de llamadas):
Si una función lanza un throw y no tiene catch , el error sube a la
función que la llamó.
Sigue subiendo hasta que encuentra un catch .
Si nadie lo atrapa, el programa termina con un error.
2️⃣ Fórmula generalizada
Date, Math, Temporizador y Manejos de Errores 7
try {
// Código normal
if (condicionQueFalla) {
throw new Error("Mensaje de error ❌");
}
// Si no falla, sigue el flujo normal
[Link]("Todo bien "); ✅
} catch (error) {
[Link]("Error atrapado:", [Link]);
} finally {
[Link]("Esto siempre se ejecuta 🔄");
}
throw puede colocarse en cualquier línea del bloque try o incluso fuera de
funciones.
catch(error) solo se ejecuta si hubo un throw .
finally se ejecuta siempre, incluso si no hay error.
3️⃣ Ejemplo básico: forzar un error
try {
[Link]("Intentando algo...");
throw new Error("¡Algo salió mal! 💥");
} catch (error) {
[Link]("Capturamos el error:", [Link]);
} finally {
[Link]("Esto se ejecuta siempre "); 🔄
}
Salida:
Intentando algo...
Capturamos el error: ¡Algo salió mal! 💥
Date, Math, Temporizador y Manejos de Errores 8
Esto se ejecuta siempre 🔄
4️⃣ Ejemplo con funciones y propagación de errores
function c() {
throw new Error("Error en c()");
}
function b() {
c(); // el error sube aquí
}
function a() {
b(); // el error sigue subiendo
}
try {
a(); // atrapa cualquier error de b() o c()
} catch (error) {
[Link]("Error atrapado:", [Link]);
}
[Link]("El programa sigue corriendo ✅");
Salida:
Error atrapado: Error en c()
El programa sigue corriendo ✅
Explicación simple:
1. c() lanza un error.
2. No hay catch en c() , así que el error sube a b() .
3. b() tampoco tiene catch , el error sigue subiendo a a() .
4. a() está dentro de try…catch , por eso aquí se atrapa el error.
Date, Math, Temporizador y Manejos de Errores 9
5. Si no hubiera ningún catch en la pila, el programa se rompe.
5️⃣ Ejemplo de función segura con try…catch
function dividir(a, b) {
try {
if (b === 0) throw new Error("No se puede dividir entre
cero ❌");
return a / b;
} catch (error) {
[Link]("Error:", [Link]);
return null;
}
}
[Link](dividir(10, 2)); // 5
[Link](dividir(10, 0)); // Error: No se puede dividir
entre cero ❌
Permite manejar errores sin romper el programa.
Si hay error, devuelve un valor seguro ( null ) y sigue la ejecución.
✅ Resumen rápido
throw → lanza un error y detiene el flujo de la función actual.
Si no hay catch , el error sube por la pila de llamadas.
try…catch → permite atrapar errores y continuar la ejecución.
finally → se ejecuta siempre, aunque haya error.
Puedes usar throw dentro de funciones o fuera, la propagación funciona
igual.
🐇 Problemas
Date, Math, Temporizador y Manejos de Errores 10