it-praxisportal/courses/javascript/03_funktionen_und_scope/aufgabe.js

60 lines
2.1 KiB
JavaScript

/**
* 🌐 JS 03: FUNKTIONEN, SCOPE & CLOSURES 🌐
* ==========================================
* Funktionsarten, Gültigkeitsbereiche, Rest-Parameter und Closures.
*/
// 🎯 TEILZIEL 1 (TODO 1): erstelleZaehler(startWert = 0)
// Erstelle eine Funktion, die einen internen Zähler kapselt (Closure).
// Die zurückgegebene Funktion soll bei jedem Aufruf den Zähler um 1 erhöhen
// und den neuen Wert zurückgeben.
// Standardwert für startWert ist 0.
// Beispiel:
// const zaehler = erstelleZaehler(0);
// zaehler(); // 1
// zaehler(); // 2
function erstelleZaehler(startWert = 0) {
// TODO: Innere Zählerfunktion (Closure) zurückgeben
return function() {
return 0;
};
}
// 🎯 TEILZIEL 2 (TODO 2): multiplizierer(faktor)
// Erstelle eine Factory-Funktion (Closure), die eine Multiplikationsfunktion zurückgibt.
// Die zurückgegebene Funktion nimmt eine Zahl x entgegen und gibt (x * faktor) zurück.
// Beispiel:
// const verdopple = multiplizierer(2);
// verdopple(5); // 10
// const verdreifache = multiplizierer(3);
// verdreifache(4); // 12
function multiplizierer(faktor) {
// TODO: Arrow-Funktion oder anonyme Funktion zurückgeben
return (x) => 0;
}
// 🎯 TEILZIEL 3 (TODO 3): summiereAlles(...zahlen)
// Berechne die Summe beliebig vieler übergebener Zahlen unter Verwendung des
// Rest-Parameters (...zahlen).
// Werden keine Argumente übergeben, soll 0 zurückgegeben werden.
// Beispiel:
// summiereAlles(1, 2, 3, 4); // 10
// summiereAlles(5, -2); // 3
// summiereAlles(); // 0
function summiereAlles(...zahlen) {
// TODO: Rest-Parameter aufsummieren
return 0;
}
// 🎯 TEILZIEL 4 (TODO 4): erstellePraefixierer(praefix)
// Erstelle eine Funktion (Closure), die einen String als Präfix vor jeden
// übergebenen Text setzt.
// Beispiel:
// const mitEuro = erstellePraefixierer("€ ");
// mitEuro("100"); // "€ 100"
// const https = erstellePraefixierer("https://");
// https("google.com"); // "https://google.com"
function erstellePraefixierer(praefix) {
// TODO: Closure-Funktion zurückgeben
return (text) => "";
}