Programación defensiva y comprobación de entradas
Escriba comprobaciones pequeñas para las entradas, use cláusulas de guarda, análisis seguro, valores predeterminados y validación sencilla de objetos para prevenir fallos desde el principio.
Programación defensiva y comprobación de entradas es una lección gratuita de JavaScript Academy en CoddyKit. Esta es la lección 2 de 2. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de JavaScript Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de JavaScript Academy incluye 2 lecciones en total.
Introducción a las comprobaciones defensivas
Objetivo: Detener pronto las entradas no válidas para evitar que los errores se propaguen.
- Comprobaciones de tipo y rango
- Cláusulas de guarda
- Análisis seguro
- Valores predeterminados y validación sencilla de objetos

Ayudantes de tipo
Cree ayudantes pequeños para reutilizar comprobaciones como number y cadena no vacía.
// Tiny type helpers
function isNumber(n) {
return typeof n === "number" && Number.isFinite(n);
}
function isNonEmptyString(s) {
return typeof s === "string" && s.trim().length > 0;
}
console.log("isNumber(3):", isNumber(3));
console.log("isNumber(NaN):", isNumber(NaN));
console.log("isNonEmptyString(\"\"):", isNonEmptyString(""));
console.log("isNonEmptyString(\"hi\"):", isNonEmptyString("hi"));

Demostración de una cláusula de guarda
Compruebe primero las entradas; deténgase pronto ante los errores para mantener limpio el flujo principal.
// Guard clauses: return early if invalid
function buy(quantity) {
if (!isNumber(quantity)) {
console.log("Quantity must be a number");
return;
}
if (quantity <= 0) {
console.log("Quantity must be > 0");
return;
}
console.log("Buying", quantity, "items");
}
buy(3);
buy("3");
buy(0);

Análisis con valor alternativo
Valide los resultados analizados. Si el análisis falla, devuelva un pequeño valor de respaldo en lugar de provocar un fallo.
// Parse safely and use sensible defaults
function toInt(str, fallback = 0) {
const n = parseInt(str, 10);
if (!Number.isFinite(n)) {
return fallback;
}
return n;
}
console.log("toInt(\"42\"):", toInt("42"));
console.log("toInt(\"7px\", -1):", toInt("7px", -1));
console.log("toInt(\"abc\", 0):", toInt("abc", 0));

Valores predeterminados y rangos
Utilice ?? para los valores predeterminados de null/undefined y, después, limite el resultado a un rango seguro.
// Defaults with ?? and simple range checks
function clampPercent(value) {
// Use 0 as default when value is null or undefined
const v = (value ?? 0);
if (!isNumber(v)) {
return 0;
}
// Clamp into 0..100
const clamped = Math.min(100, Math.max(0, v));
return clamped;
}
console.log(clampPercent(undefined));
console.log(clampPercent(120));
console.log(clampPercent(-5));
console.log(clampPercent(55));

Comprobación de la estructura del objeto
Compruebe los campos obligatorios y los rangos sencillos; devuelva un objeto de resultado pequeño como { ok, reason }.
// Simple object validation
function validateUser(u) {
if (u == null || typeof u !== "object") {
return { ok: false, reason: "User must be an object" };
}
if (!isNonEmptyString(u.name)) {
return { ok: false, reason: "name required" };
}
if (!isNumber(u.age) || u.age < 0) {
return { ok: false, reason: "age must be a number >= 0" };
}
return { ok: true };
}
console.log("good:", validateUser({ name: "Ayla", age: 21 }));
console.log("bad:", validateUser({ name: "", age: -1 }));

Cuestionario sobre comprobaciones defensivas
Comprobación rápida: Gestión defensiva de entradas.

Repaso
Repaso: Utilice ayudantes de tipo pequeños, cláusulas de guarda, análisis seguro con valores de respaldo, valores predeterminados para nullish, límites de rango y validación sencilla de objetos para detener pronto los errores.

Preguntas frecuentes
¿La lección «Programación defensiva y comprobación de entradas» es gratis?
Sí — el texto completo de «Programación defensiva y comprobación de entradas» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de JavaScript Academy, actualiza a CoddyKit PRO. El curso de JavaScript Academy incluye 2 lecciones en total.
¿Qué aprenderé en «Programación defensiva y comprobación de entradas»?
Escriba comprobaciones pequeñas para las entradas, use cláusulas de guarda, análisis seguro, valores predeterminados y validación sencilla de objetos para prevenir fallos desde el principio. Practicas JavaScript Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar JavaScript Academy?
No se requiere experiencia previa. JavaScript Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 2.
¿Cuánto tiempo toma la lección «Programación defensiva y comprobación de entradas»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de JavaScript Academy?
Sí. Cada lección de JavaScript Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- try/catch/finally, throw y errores personalizados
- Programación defensiva y comprobación de entradas