0Pricing
JavaScript Academy · Lezione

Programmazione difensiva e controlli degli input

Scrivi piccoli controlli degli input, usi clausole di guardia, parsing sicuro, valori predefiniti e una semplice validazione degli oggetti per prevenire subito gli errori.

Programmazione difensiva e controlli degli input è una lezione JavaScript Academy gratuita su CoddyKit. Questa è la lezione 2 di 2. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento JavaScript Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso JavaScript Academy include 2 lezioni in totale.

Introduzione ai controlli difensivi

Obiettivo: Bloccare subito gli input non validi, così gli errori non si propagano.

  • Controlli di tipo e intervallo
  • Clausole di guardia
  • Parsing sicuro
  • Valori predefiniti e semplice validazione degli oggetti
Programmazione difensiva e controlli degli input — illustrazione 1

Helper per i tipi

Crei piccoli helper per riutilizzare controlli come number e stringa non vuota.

// 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"));
Programmazione difensiva e controlli degli input — illustrazione 2

Dimostrazione di una clausola di guardia

Controlli prima gli input e interrompa subito l'esecuzione in caso di errore, così il percorso principale rimane pulito.

// 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);
Programmazione difensiva e controlli degli input — illustrazione 3

Parsing con fallback

Convalidi i risultati del parsing. Se il parsing fallisce, restituisca un piccolo fallback invece di arrestare il programma.

// 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));
Programmazione difensiva e controlli degli input — illustrazione 4

Valori predefiniti e intervalli

Utilizzi ?? per i valori predefiniti di null/undefined, poi limiti il valore a un intervallo sicuro.

// 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));
Programmazione difensiva e controlli degli input — illustrazione 5

Controllo della struttura dell'oggetto

Verifichi i campi obbligatori e gli intervalli semplici; restituisca un piccolo oggetto risultato come { 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 }));
Programmazione difensiva e controlli degli input — illustrazione 6

Quiz sui controlli difensivi

Controllo rapido: gestione difensiva degli input.

Programmazione difensiva e controlli degli input — illustrazione 7

Riepilogo

Riepilogo: Utilizzi piccoli helper per i tipi, clausole di guardia, parsing sicuro con fallback, valori predefiniti nullish, limiti di intervallo e una semplice validazione degli oggetti per bloccare gli errori sul nascere.

Programmazione difensiva e controlli degli input — illustrazione 8

Domande Frequenti

La lezione «Programmazione difensiva e controlli degli input» è gratuita?

Sì — il testo completo di «Programmazione difensiva e controlli degli input» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso JavaScript Academy, passa a CoddyKit PRO. Il corso JavaScript Academy include 2 lezioni in totale.

Cosa imparerò in «Programmazione difensiva e controlli degli input»?

Scrivi piccoli controlli degli input, usi clausole di guardia, parsing sicuro, valori predefiniti e una semplice validazione degli oggetti per prevenire subito gli errori. Eserciti JavaScript Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare JavaScript Academy?

Non è richiesta alcuna esperienza precedente. JavaScript Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 2.

Quanto tempo richiede la lezione «Programmazione difensiva e controlli degli input»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione JavaScript Academy?

Sì. Ogni lezione JavaScript Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. try/catch/finally, throw, errori personalizzati
  2. Programmazione difensiva e controlli degli input
← Torna a JavaScript Academy