07 – Funktionen 📦

Wiederverwendbarer, strukturierter und wartbarer Code

🎯 1. Einleitung & W3Schools

In diesem Kapitel hast du gelernt, wie Funktionen Code kapseln, wiederverwenden und testen – mit Parametern, Rückgabewerten und klarem Gültigkeitsbereich (Scope).

🔗 W3Schools – JavaScript Functions

🧠 2. KI-Prompt-Training

Aufgabe: Formuliere einen Prompt, mit dem du KI um Hilfe bitten würdest, um zu erklären, warum Funktionen mit Rückgabewert besser sind als solche ohne – und wie der Gültigkeitsbereich (Scope) von Variablen in Funktionen funktioniert.

💡 Tipp: Fordere ein Beispiel mit Zähler-Fabrik (Closure) an, um fortgeschrittene Konzepte zu vertiefen.

🔄 Aufgabe 1: Rückgabewert vs. Seiteneffekt – Was ist besser?

Gegeben sind zwei Funktionen, die eine Liste um ein Element erweitern:

// Variante A: Seiteneffekt
function fuegeHinzuA(liste, element) {
  liste.push(element);
}

// Variante B: Rückgabewert
function fuegeHinzuB(liste, element) {
  return [...liste, element];
}

Deine Aufgabe:

  1. Erkläre den Unterschied zwischen Seiteneffekt (Variante A) und reiner Funktion (Variante B).
  2. Wann ist welche Variante sinnvoll? Gib je ein Anwendungsbeispiel aus der Praxis.
  3. Teste beide Varianten mit:
    const original = ["Apfel"];
    fuegeHinzuA(original, "Banane");
    const neueListe = fuegeHinzuB(original, "Orange");
    Was ist der Inhalt von original danach? Begründe!
  4. Formuliere einen Prompt, der eine Funktion erstellt, die immun gegen unbeabsichtigte Änderungen des Originals ist.

🔒 Aufgabe 2: Scope und Closure – Warum funktioniert das?

Analysiere folgenden Code:

function zaehlerErzeugen() {
  let zaehler = 0;
  return function() {
    zaehler++;
    return zaehler;
  };
}

const zaehler1 = zaehlerErzeugen();
console.log(zaehler1()); // → 1
console.log(zaehler1()); // → 2

Deine Aufgabe:

  1. Erkläre, warum die Variable zaehler nicht verloren geht, obwohl zaehlerErzeugen() schon beendet ist.
  2. Was passiert, wenn du einen zweiten Zähler erstellst? Teilen sich beide den gleichen zaehler?
  3. Warum ist das ein Beispiel für Closure?
  4. Formuliere einen Prompt, der eine Zähler-Fabrik mit Closure erstellt – und erklärt, warum jede Instanz ihren eigenen Zustand hat.

📊 Beurteilungskriterien – Übung 07: Funktionen

Deine Lösung wird anhand folgender Kriterien beurteilt – besonders im Fachgespräch. Markiere selbst ehrlich, wo du stehst:

Kriterium
Erfüllt

Teilweise

Nicht erfüllt
Verständnis von Rückgabewerten vs. Seiteneffekten:
Kannst du im Fachgespräch erklären, warum Funktionen mit Rückgabewert besser wartbar sind als solche mit Seiteneffekten?
Umgang mit Scope und Closure:
Verstehst du, warum eine innere Funktion auf Variablen der äußeren Funktion zugreifen kann – und warum jede „Zähler-Fabrik“ ihren eigenen Zustand hat?
Qualität der Prompts:
Sind deine Prompts präzise formuliert, thematisch korrekt und vermeiden sie, KI um „fertigen Code“ zu bitten?
Eigene Reflexion:
Kannst du im Fachgespräch erklären, warum du deine Lösung gewählt hast – oder gibst du nur KI-Output ab?

⚠️ Hinweis: Im Fachgespräch wirst du gebeten, deine Lösung in eigenen Worten zu erklären. Wer nur KI-Code abgibt, kann die Fragen nicht beantworten.

🎓 Jetzt kannst du sauberen, wiederverwendbaren Code schreiben!

→ Zu Übung 08: Objekte