Zum Inhalt springen
aviral gupta

// B2.1 · ca. 30 Min. · Einstieg

Primitive Typen und typeof

Nach dieser Lektion bestimmen Sie den Typ jedes JavaScript-Werts, sagen vorher, was + mit Text und Zahlen macht, und wandeln Werte gezielt mit Number(), String() und Boolean() um.

Lektion 1 von 5 in B2 Grammatik, Typen und Operatoren

Anfang des Moduls

Danach können Sie

  • Die sieben primitiven Typen und object nennen und den Typ eines Werts mit typeof prüfen
  • Vorhersagen, was + mit Strings und Zahlen macht und was -, * und / mit Strings machen
  • Werte mit Number(), String() und Boolean() umwandeln und wissen, was NaN, 0 oder false ergibt
  1. Aufwärmen · Aufgabe 1 von 7

    Zum Aufwärmen: Welcher dieser Werte ist ein Stück Text, also ein String?

  2. Vorhersagen · Aufgabe 2 von 7

    Sagen Sie es vorher, bevor Sie weiterlesen: Was gibt dieser Code aus?

    console.log("5" + 2, "5" - 2);
  3. Üben · Aufgabe 3 von 7

    Ergänzen Sie einen Wert, sodass das Programm boolean ausgibt.

    console.log(typeof ____);
    console.log(typeof );
  4. Üben · Aufgabe 4 von 7

    Ordnen Sie jedem Ausdruck zu, was console.log dafür ausgibt.

  5. Üben · Aufgabe 5 von 7

    Ein Formularfeld enthält "12px". Was gibt dieser Code aus?

    console.log(Number("12px"));
  6. Denksport · Aufgabe 6 von 7

    Knobelaufgabe. Was gibt dieser Code aus?

    console.log(1 + 2 + "3", "1" + 2 + 3);
  7. Anwenden · Aufgabe 7 von 7

    Mini-Aufgabe. Eine Shop-Seite liefert den Preis "19.99" als String, der Versand kostet 4.5. Geben Sie den Typ von beiden aus, dann die falsche Summe, die price + shipping ergibt, dann die richtige Summe mit Number(). Geben Sie zum Schluss Boolean("") aus, um zu sehen, was ein leeres Formularfeld zählt.

    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

Ein Bestellformular auslesen

Werte aus einem Webformular kommen als Strings an, auch wenn sie wie Zahlen aussehen. Dieses Programm zeigt, was das mit einer Rechnung macht, wandelt die Werte gezielt um und prüft einige Typen mit typeof. Führen Sie es aus, ändern Sie dann quantity in "three" und sehen Sie nach, was Number() daraus macht.

main.js

// Values from a web form always arrive as text.
const quantity = "3";
const price = "4.50";
const giftNote = "";

console.log(typeof quantity, typeof price);
console.log("joined:", quantity + price);
console.log("total:", Number(quantity) * Number(price));
console.log("gift note?", Boolean(giftNote));
console.log("price as text:", String(Number(price)));
console.log(typeof null, typeof undefined, typeof 10n);

Ausführen mit

node main.js

Ausgabe

string string
joined: 34.50
total: 13.5
gift note? false
price as text: 4.5
object undefined bigint
  • quantity + price verbindet die beiden Strings: Aus "3" und "4.50" wird "34.50".
  • Number() macht aus jedem String zuerst eine Zahl, also multipliziert *: 3 × 4.5 ist 13.5.
  • Ein leerer String wird zu false, Boolean(giftNote) zeigt also, dass das Feld leer blieb.
  • Number("4.50") ist 4.5; String() macht daraus wieder Text, ohne die zusätzliche Null.
  • typeof null ist "object", ein alter Fehler der Sprache, der beibehalten wurde.
Ä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

Den Warenkorb zählen

Zwei Mengen kommen als Strings aus einem Formular, "2" und "3". Das Programm soll Items: 5 und danach Type: number ausgeben, gibt aber Items: 23 und Type: string aus. Wandeln Sie die Mengen mit Number() um, bevor Sie sie addieren, und behalten Sie die beiden console.log-Zeilen bei.

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
  1. Hinweis 1

    apples + pears verbindet zwei Strings: "2" + "3" ist "23".

  2. Hinweis 2

    Number("2") ist die Zahl 2. Wandeln Sie jede Menge vor dem + um.

  3. Hinweis 3

    const total = Number(apples) + Number(pears);

Eine Lösung zeigen

Ein möglicher Lösungsweg. Ihrer kann anders aussehen und trotzdem alle Prüfungen bestehen.

// Two quantities typed into a form arrive as text.
const apples = "2";
const pears = "3";
const total = Number(apples) + Number(pears);
console.log("Items:", total);
console.log("Type:", typeof total);
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

// Two quantities typed into a form arrive as text.
const apples = "2";
const pears = "3";
const total = apples + pears;
console.log("Items:", total);
console.log("Type:", typeof total);

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('gibt die Anzahl der Artikel aus', async () => {
  const got = await lines();
  assert.equal(got[0], 'Items: 5', `die erste Zeile ist ${JSON.stringify(got[0])}, erwartet: "Items: 5"`);
});

test('die Summe ist eine Zahl', async () => {
  const got = await lines();
  assert.equal(got[1], 'Type: number', `die zweite Zeile ist ${JSON.stringify(got[1])}, erwartet: "Type: number"`);
});

test('gibt zwei Zeilen aus', async () => {
  const got = await lines();
  assert.equal(got.length, 2, `das Programm gab ${got.length} Zeile(n) aus, erwartet: 2`);
});

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.js

Prüfungen ausführen (learnrun.js muss im selben Ordner liegen):

node --test
learnrun.js herunterladen

Übung 2 von 2

Wahr oder falsch?

Geben Sie in einer Zeile aus, was Boolean() aus diesen sechs Werten macht, in dieser Reihenfolge: 0, "0", "", " " (ein Leerzeichen), null und "false". Übergeben Sie alle sechs Ergebnisse an ein einziges console.log. Sagen Sie jedes Ergebnis vorher, bevor Sie das Programm 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.

Hinweise
  1. Hinweis 1

    console.log(Boolean(0), Boolean("0")) gibt zwei Ergebnisse in einer Zeile aus; ergänzen Sie die anderen vier genauso.

  2. Hinweis 2

    Unter den Strings ist nur der leere String "" false; "0", " " und "false" enthalten Zeichen.

  3. Hinweis 3

    0 und null werden beide zu false.

Eine Lösung zeigen

Ein möglicher Lösungsweg. Ihrer kann anders aussehen und trotzdem alle Prüfungen bestehen.

console.log(Boolean(0), Boolean("0"), Boolean(""), Boolean(" "), Boolean(null), Boolean("false"));
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

// Print Boolean(value) for each value, all on one line:
// 0, "0", "", " ", null, "false"

main.test.js

import {test} from 'node:test';
import assert from 'node:assert/strict';
import {runMain} from './learnrun.js';

test('gibt eine Zeile aus', async () => {
  const got = (await runMain()).trimEnd().split('\n');
  assert.equal(got.length, 1, `das Programm gab ${got.length} Zeile(n) aus, erwartet: 1`);
});

test('gibt die sechs Ergebnisse der Reihe nach aus', async () => {
  const got = (await runMain()).trimEnd();
  assert.equal(got, 'false true false true false true', `das Programm gab ${JSON.stringify(got)} aus`);
});

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.js

Prüfungen ausführen (learnrun.js muss im selben Ordner liegen):

node --test
learnrun.js herunterladen

Häufige Fehler

bigint und number mischen

const big = 10n;
console.log(big + 1);

Was Node.js ausgibt

TypeError: Cannot mix BigInt and other types, use explicit conversions

Warum, und die Lösung

bigint und number sind verschiedene Typen, und beim Rechnen wandelt JavaScript nicht selbst zwischen ihnen um, weil ein großer bigint als number Stellen verlieren könnte. Verwenden Sie auf beiden Seiten bigints, big + 1n, oder wandeln Sie gezielt um: Number(big) + 1. Die meisten Programme brauchen bigint nie; nutzen Sie ihn nur für ganze Zahlen, die für number zu groß sind.

null wie einen String behandeln

const nickname = null;
console.log(nickname.length);

Was Node.js ausgibt

TypeError: Cannot read properties of null (reading 'length')

Warum, und die Lösung

null bedeutet „kein Wert“, hat also keine length und auch sonst keine Eigenschaften. Eine davon zu lesen, stoppt das Programm; undefined ergibt denselben Fehler mit undefined in der Meldung. Prüfen Sie, woher der Wert kommt: Wenn ein Name fehlen kann, geben Sie ihm einen String wie "" statt null, oder behandeln Sie den fehlenden Fall zuerst (Modul B3 zeigt, wie das mit if geht).

Ein Symbol mit + verbinden

const id = Symbol("id");
console.log("id: " + id);

Was Node.js ausgibt

TypeError: Cannot convert a Symbol value to a string

Warum, und die Lösung

Ein Symbol ist eine eindeutige Kennung, kein Text, und + weigert sich, es stillschweigend in einen String umzuwandeln. Wenn Sie es anzeigen müssen, wandeln Sie es gezielt um: String(id) ergibt "Symbol(id)". Symbole kommen in diesem Kurs selten vor; der Punkt ist, dass + die meisten Werte ungefragt umwandelt, diesen aber nicht.

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.

Problem melden

Etwas ist falsch oder unklar? Beschreiben Sie es kurz, dann wird es geprüft und korrigiert.

#

Mindestens 20 Zeichen.

Nur, wenn Sie eine Antwort wünschen.

Kernideen

Sieben primitive Typen, dazu object

Jeder Wert hat einen Typ. Sieben Typen sind primitiv, also einfache Werte: string ("Ada"), number (42 oder 3.5: ein Typ für ganze Zahlen und Dezimalzahlen), bigint (ganze Zahlen beliebiger Größe, mit einem n geschrieben: 10n), boolean (true oder false), undefined (eine Variable ohne Wert), null (ein Wert, den Sie bewusst für „nichts“ setzen) und symbol (eine eindeutige Kennung, erzeugt mit Symbol("id")). Alles andere, etwa eine Liste [1, 2], ist ein Objekt. Der Operator typeof liefert den Typ als String: typeof 42 ist "number". Eine Antwort ist ein alter, nie behobener Fehler: typeof null ist "object", nicht "null".

+ verbindet Text, die anderen Operatoren rechnen

Der Operator + hat zwei Aufgaben. Mit zwei Zahlen addiert er: 5 + 2 ist 7. Sobald eine Seite ein String ist, macht er auch die andere Seite zum String und hängt beide aneinander: "5" + 2 ist "52". Er arbeitet von links nach rechts, also ist 1 + 2 + "3" gleich "33": Zuerst wird 1 + 2 addiert, dann "3" angehängt. Die anderen Rechenoperatoren -, * und / arbeiten nur mit Zahlen und wandeln Strings deshalb in Zahlen um: "5" - 2 ist 3, und "3" * "4" ist 12. JavaScript wandelt dabei stillschweigend um, und der Fall mit + überrascht am häufigsten.

Gezielt umwandeln: Number(), String(), Boolean()

Was in ein Formular getippt wird, kommt als String an. Wandeln Sie es also um, bevor Sie rechnen. Number("4.5") ist 4.5, Number(" 42 ") ist 42 (Leerzeichen an den Enden werden ignoriert) und Number("") ist 0. Text, der keine Zahl ist, ergibt NaN, „not a number“: Number("12px") ist NaN. Number(null) ist 0, Number(undefined) ist NaN und Number(true) ist 1. String(42) ist "42". Boolean() ergibt false für false, 0, -0, NaN, den leeren String "", null und undefined, und true für jede andere Zahl und jeden anderen String, sogar für "0", "false" und " ".

Quellen

Zuletzt geprüft am 30. September 2026