Aufwärmen · Aufgabe 1 von 7
// B2.3 · ca. 30 Min. · Einstieg
Strings und Template-Literale
Nach dieser Lektion schreiben Sie jeden Text als JavaScript-String, holen Zeichen und Teile heraus, bringen ihn mit String-Methoden in Form und bauen Meldungen mit Template-Literalen.
Danach können Sie
- Strings mit Anführungszeichen und Escapes schreiben und ihre Länge und Zeichen per Index lesen
- slice, includes, startsWith, toUpperCase, trim und padStart nutzen und wissen, dass jede einen neuen String liefert
- Text mit Template-Literalen bauen: Platzhalter mit ${} und Text über mehrere Zeilen
Vorhersagen · Aufgabe 2 von 7
Sagen Sie es vorher, bevor Sie weiterlesen: Was gibt dieser Code aus?
const word = "hello"; word.toUpperCase(); console.log(word);Üben · Aufgabe 3 von 7
Ergänzen Sie die Zahl, sodass das Programm Java ausgibt.
console.log("JavaScript".slice(0, ____));console.log("JavaScript".slice(0, ));Üben · Aufgabe 4 von 7
Ordnen Sie jedem Ausdruck zu, was console.log dafür ausgibt.
Üben · Aufgabe 5 von 7
Was gibt dieser Code aus?
console.log("Banana".includes("ban"));Denksport · Aufgabe 6 von 7
Knobelaufgabe. Was gibt dieser Code aus?
console.log("Total: ${2 + 3}");Anwenden · Aufgabe 7 von 7
Mini-Aufgabe. Eine Kasse liefert den Artikel " coffee " (mit überzähligen Leerzeichen), die Menge 2, den Preis 3.2 und die Bestellnummer 42. Geben Sie mit Template-Literalen COFFEE x2 aus, dann Total: 6.40 EUR, dann Order no. 00042.
Prüfen Sie Ihr Ergebnis anhand dieser Liste
Selbst programmieren
Lesen Sie das ausgearbeitete Beispiel und lösen Sie dann die Übungen. Ihr Code läuft in Ihrem Browser oder auf Ihrem Computer und wird nie hochgeladen.
Ausgearbeitetes Beispiel
Eine Fahrkarte drucken
Ein Buchungsformular schickt einen Namen mit überzähligen Leerzeichen und in Kleinbuchstaben. Dieses Programm bringt ihn in Form, holt Zeichen und Teile heraus, prüft den Bahnhofsnamen und gibt mit einem einzigen Template-Literal eine dreizeilige Fahrkarte aus. Führen Sie es aus und ändern Sie dann den Sitzplatz auf 12 und den Namen auf Ihren eigenen.
main.js
// Formatting a train ticket from raw text.
const rawName = " ada lovelace ";
const from = "Berlin Hbf";
const seat = 7;
const name = rawName.trim();
console.log("name:", name, "length:", name.length);
console.log("initial:", name[0].toUpperCase());
console.log("first name:", name.slice(0, 3));
console.log("from Berlin?", from.startsWith("Berlin"), "main station?", from.includes("Hbf"));
const ticket = `Passenger: ${name.toUpperCase()}
From: ${from}
Seat: ${String(seat).padStart(3, "0")}`;
console.log(ticket);
console.log('She said "bon voyage"\nand waved.');
console.log("rawName is unchanged:", rawName.length);
Ausführen mit
node main.jsAusgabe
name: ada lovelace length: 12
initial: A
first name: ada
from Berlin? true main station? true
Passenger: ADA LOVELACE
From: Berlin Hbf
Seat: 007
She said "bon voyage"
and waved.
rawName is unchanged: 15- trim() liefert einen neuen String ohne die Leerzeichen an den Enden: 12 Zeichen statt 15.
- name[0] ist das erste Zeichen; toUpperCase() macht daraus ein großes A.
- slice(0, 3) nimmt die Indizes 0, 1 und 2: ada.
- Das Template-Literal geht über drei Zeilen, also gibt ein console.log die ganze Fahrkarte aus.
- In einfachen Anführungszeichen darf der Text doppelte enthalten, und \n beginnt eine neue Zeile.
- rawName hat weiterhin seine 15 Zeichen: Keine Methode hat es verändert.
Ändern und ausführen
Tab rückt ein, Umschalt+Tab rückt aus. Um den Editor mit der Tastatur zu verlassen, drücken Sie Esc und dann Tab.
Beim ersten Ausführen lädt Ihr Browser den JavaScript-Runner herunter (bis zu 0.1 MB) und speichert ihn im Cache. Ihr Code läuft in der eigenen Engine Ihres Browsers und bleibt auf Ihrem Gerät.
Übungen
Übung 1 von 2
Einen Namen aufräumen
Ein Formular schickt den Namen " Grace Hopper " mit überzähligen Leerzeichen. Geben Sie drei Zeilen aus: Hello, Grace Hopper! (ohne die zusätzlichen Leerzeichen), Letters: 12 (die Länge des aufgeräumten Namens, Leerzeichen eingeschlossen) und Code: GRA (seine ersten drei Zeichen in Großbuchstaben). Berechnen Sie jeden Wert aus raw.
Tab rückt ein, Umschalt+Tab rückt aus. Um den Editor mit der Tastatur zu verlassen, drücken Sie Esc und dann Tab.
Beim ersten Ausführen lädt Ihr Browser den JavaScript-Runner herunter (bis zu 0.1 MB) und speichert ihn im Cache. Ihr Code läuft in der eigenen Engine Ihres Browsers und bleibt auf Ihrem Gerät.
Hinweise
Hinweis 1
raw.trim() liefert den Namen ohne die Leerzeichen an beiden Enden. Speichern Sie ihn: const name = raw.trim();
Hinweis 2
name.length zählt die Zeichen, auch das Leerzeichen in der Mitte.
Hinweis 3
name.slice(0, 3) liefert "Gra"; rufen Sie toUpperCase() auf diesem Ergebnis auf.
Eine Lösung zeigen
Ein möglicher Lösungsweg. Ihrer kann anders aussehen und trotzdem alle Prüfungen bestehen.
const raw = " Grace Hopper ";
const name = raw.trim();
console.log(`Hello, ${name}!`);
console.log("Letters:", name.length);
console.log("Code:", name.slice(0, 3).toUpperCase());
Auf dem eigenen Computer ausführen
Installieren Sie ECMAScript 2026 oder neuer. Speichern Sie diese Dateien in einem Ordner, öffnen Sie dort ein Terminal und führen Sie die Befehle unten aus.
main.js
const raw = " Grace Hopper ";
// Print three lines:
// Hello, Grace Hopper!
// Letters: 12
// Code: GRA
console.log("Hello, " + raw + "!");
main.test.js
import {test} from 'node:test';
import assert from 'node:assert/strict';
import {runMain} from './learnrun.js';
const lines = async () => (await runMain()).trimEnd().split('\n');
test('begrüßt den aufgeräumten Namen', async () => {
const got = await lines();
assert.equal(got[0], 'Hello, Grace Hopper!', `die erste Zeile ist ${JSON.stringify(got[0])}, erwartet: "Hello, Grace Hopper!"`);
});
test('gibt die Länge des aufgeräumten Namens aus', async () => {
const got = await lines();
assert.equal(got[1], 'Letters: 12', `die zweite Zeile ist ${JSON.stringify(got[1])}, erwartet: "Letters: 12"`);
});
test('gibt den Code in Großbuchstaben aus', async () => {
const got = await lines();
assert.equal(got[2], 'Code: GRA', `die dritte Zeile ist ${JSON.stringify(got[2])}, erwartet: "Code: GRA"`);
});
package.json
{
"type": "module"
}
package.json sagt Node.js, dass die .js-Dateien Module sind; lassen Sie die Datei im Ordner.
Programm ausführen:
node main.jsPrüfungen ausführen (learnrun.js muss im selben Ordner liegen):
node --testlearnrun.js herunterladenÜbung 2 von 2
Ein Paketetikett
Geben Sie ein dreizeiliges Paketetikett mit einem console.log und einem Template-Literal aus: Order #00042 (die Bestellnummer, mit Nullen auf fünf Ziffern aufgefüllt), To: HAMBURG (die Stadt in Großbuchstaben) und Items: 3. Verwenden Sie die drei Konstanten; der Starter gibt nur Order #42 aus.
Tab rückt ein, Umschalt+Tab rückt aus. Um den Editor mit der Tastatur zu verlassen, drücken Sie Esc und dann Tab.
Beim ersten Ausführen lädt Ihr Browser den JavaScript-Runner herunter (bis zu 0.1 MB) und speichert ihn im Cache. Ihr Code läuft in der eigenen Engine Ihres Browsers und bleibt auf Ihrem Gerät.
Hinweise
Hinweis 1
padStart ist eine String-Methode, machen Sie aus der Zahl also zuerst einen String: String(order).padStart(5, "0").
Hinweis 2
Drücken Sie innerhalb der Backticks Enter, wo eine neue Zeile beginnen soll; der Zeilenumbruch wird Teil des Textes.
Hinweis 3
Jeder Wert kommt in einen eigenen Platzhalter: ${city.toUpperCase()}.
Eine Lösung zeigen
Ein möglicher Lösungsweg. Ihrer kann anders aussehen und trotzdem alle Prüfungen bestehen.
const order = 42;
const city = "Hamburg";
const items = 3;
console.log(`Order #${String(order).padStart(5, "0")}
To: ${city.toUpperCase()}
Items: ${items}`);
Auf dem eigenen Computer ausführen
Installieren Sie ECMAScript 2026 oder neuer. Speichern Sie diese Dateien in einem Ordner, öffnen Sie dort ein Terminal und führen Sie die Befehle unten aus.
main.js
const order = 42;
const city = "Hamburg";
const items = 3;
// Print, with one template literal over three lines:
// Order #00042
// To: HAMBURG
// Items: 3
console.log("Order #" + order);
main.test.js
import {test} from 'node:test';
import assert from 'node:assert/strict';
import {runMain} from './learnrun.js';
const lines = async () => (await runMain()).trimEnd().split('\n');
test('füllt die Bestellnummer auf', async () => {
const got = await lines();
assert.equal(got[0], 'Order #00042', `die erste Zeile ist ${JSON.stringify(got[0])}, erwartet: "Order #00042"`);
});
test('gibt die Stadt in Großbuchstaben aus', async () => {
const got = await lines();
assert.equal(got[1], 'To: HAMBURG', `die zweite Zeile ist ${JSON.stringify(got[1])}, erwartet: "To: HAMBURG"`);
});
test('gibt die Anzahl der Artikel aus', async () => {
const got = await lines();
assert.equal(got[2], 'Items: 3', `die dritte Zeile ist ${JSON.stringify(got[2])}, erwartet: "Items: 3"`);
});
package.json
{
"type": "module"
}
package.json sagt Node.js, dass die .js-Dateien Module sind; lassen Sie die Datei im Ordner.
Programm ausführen:
node main.jsPrüfungen ausführen (learnrun.js muss im selben Ordner liegen):
node --testlearnrun.js herunterladenHäufige Fehler
Ein Zeichen eines Strings ändern
const word = "cat";
word[0] = "b";
console.log(word);
Was Node.js ausgibt
TypeError: Cannot assign to read only property '0' of string 'cat'Warum, und die Lösung
Strings sind unveränderlich, ihren Zeichen lässt sich also nichts zuweisen. In einem Modul, und main.js ist hier eines, stoppt das das Programm; in älteren Skripten wird die Zeile stillschweigend ignoriert, was schlimmer ist. Bauen Sie stattdessen einen neuen String: const fixed = "b" + word.slice(1); ergibt "bat".
Dasselbe Anführungszeichen im String
console.log('It's fine');
Was Node.js ausgibt
SyntaxError: missing ) after argument listWarum, und die Lösung
Der Apostroph in It's beendet den String in einfachen Anführungszeichen nach It, also liest JavaScript s fine' als Code und kann nichts damit anfangen. Nichts in der Datei läuft. Nehmen Sie doppelte Anführungszeichen, "It's fine", setzen Sie einen Backslash vor den Apostroph, 'It\'s fine', oder nehmen Sie Backticks.
Ein Methodenname in falscher Schreibung
const name = "ada";
console.log(name.toUppercase());
Was Node.js ausgibt
TypeError: name.toUppercase is not a functionWarum, und die Lösung
Methodennamen unterscheiden Groß- und Kleinschreibung, und die Methode heißt toUpperCase, mit großem C. name.toUppercase gibt es nicht, es ist also undefined, und undefined aufzurufen ist ein TypeError. Dieselbe Falle wartet bei toLowerCase und padStart: Jedes Wort nach dem ersten beginnt mit einem Großbuchstaben.
JavaScript im Browser: die eigene Engine Ihres Browsers in einem abgeschotteten Worker. Syntaxfehler findet acorn 8.18.0, MIT. Lizenz und Quellcode
Abschlussquiz
5 Fragen, ohne Hinweise. Ab 80 % ist die Lektion abgeschlossen.
Erledigen Sie zuerst alle Aufgaben oben, um das Abschlussquiz freizuschalten.