JavaScript Academy · leksjon

Defensiv programmering og input-sjekker

Skriv små input-sjekker, bruk guard clauses, trygg parsing, standardverdier og enkel objektvalidering for å forhindre feil tidlig.

Leksjon 2 av 28 trinn

Defensiv programmering og input-sjekker er en gratis leksjon i JavaScript Academy på CoddyKit. Dette er leksjon 2 av 2. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i JavaScript Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i JavaScript Academy inneholder totalt 2 leksjoner.

Introduksjon til defensive kontroller

Mål: Stopp ugyldige inndata tidlig, slik at feil ikke sprer seg.

  • Kontroller av type og område
  • Guard clauses
  • Trygg parsing
  • Standardverdier og enkel objektvalidering
Defensiv programmering og input-sjekker — illustrasjon 1

Typehjelpere

Opprett små hjelpefunksjoner for å gjenbruke kontroller av for eksempel number og ikke-tom streng.

// 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"));
Defensiv programmering og input-sjekker — illustrasjon 2

Demonstrasjon av guard clause

Kontroller inndata først, og stopp tidlig ved feil slik at hovedflyten forblir ryddig.

// 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);
Defensiv programmering og input-sjekker — illustrasjon 3

Parsing med reserveverdi

Valider resultatene etter parsing. Hvis parsingen mislykkes, returnerer du en liten fallback i stedet for at programmet krasjer.

// 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));
Defensiv programmering og input-sjekker — illustrasjon 4

Standardverdier og områder

Bruk ?? for standardverdier ved null/undefined, og begrens deretter verdien til et trygt område.

// 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));
Defensiv programmering og input-sjekker — illustrasjon 5

Kontroll av objektstruktur

Kontroller obligatoriske felt og enkle områder. Returner et lite resultatobjekt, for eksempel { 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 }));
Defensiv programmering og input-sjekker — illustrasjon 6

Quiz om defensive kontroller

Rask sjekk: Defensiv håndtering av inndata.

Defensiv programmering og input-sjekker — illustrasjon 7

Oppsummering

Oppsummering: Bruk små typehjelpere, guard clauses, trygg parsing med reserveverdier, nullish-standardverdier, begrensning til gyldige områder og enkel objektvalidering for å stoppe feil tidlig.

Defensiv programmering og input-sjekker — illustrasjon 8
Gratis å komme i gang

Lær deg JavaScript med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
59
Leksjoner
200

Ofte stilte spørsmål

Er leksjonen «Defensiv programmering og input-sjekker» gratis?

Ja – du kan lese valgfritt 3 av leksjonene i læringsstien JavaScript Academy, inkludert «Defensiv programmering og input-sjekker», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i JavaScript Academy inneholder totalt 2 leksjoner.

Hva lærer jeg i «Defensiv programmering og input-sjekker»?

Skriv små input-sjekker, bruk guard clauses, trygg parsing, standardverdier og enkel objektvalidering for å forhindre feil tidlig. Du øver på JavaScript Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med JavaScript Academy?

Ingen tidligere erfaring er nødvendig. JavaScript Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 2 av 2.

Hvor lang tid tar leksjonen «Defensiv programmering og input-sjekker»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne JavaScript Academy-leksjonen?

Ja. Alle JavaScript Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. try/catch/finally, throw og egendefinerte feil
  2. Defensiv programmering og input-sjekker
← Tilbake til JavaScript Academy