Jeder Wert hat eine Boolean-Stimmung
In JavaScript darfst du jeden Wert dort hinschreiben, wo eigentlich ein Boolean erwartet wird – in einem if, als Bedingung einer while-Schleife oder neben && bzw. ||. Sobald du das tust, wird der Wert zu true oder false umgewandelt. Werte, die dabei zu false werden, nennt man falsy. Alle anderen sind truthy.
Keine Konvertierungsfunktion, kein expliziter Cast – JavaScript erledigt das von ganz allein. Die Regeln sind festgelegt und überschaubar: Sobald du die Liste der Falsy-Werte kennst, ergibt sich alles andere automatisch.
Die komplette Liste der Falsy-Werte in JavaScript
Genau sieben Werte gelten in JavaScript als falsy. Alles andere in der Sprache ist truthy.
Mehr ist es nicht. Hier die komplette Liste:
false— der Boolean selbst.0und-0— beide Nullen.0n— die BigInt-Null.""— der leere String (egal ob mit einfachen, doppelten oder Backtick-Anführungszeichen).null— der Wert für "bewusst nichts".undefined— der Wert für "nicht gesetzt".NaN— das Ergebnis ungültiger Rechnungen wie0 / 0.
Merk dir diese sieben. Wenn du dir bei einem Wert unsicher bist, frag dich einfach: "Ist es einer von den sieben?" Falls nicht, ist er truthy.
Die Stolperfallen: "0", [] und {}
Genau hier tappen Einsteiger gerne rein. Es gibt reichlich Werte, die leer aussehen, aber trotzdem truthy sind:
Strings sind nur dann falsy, wenn sie null Zeichen enthalten. "0" hat ein Zeichen und ist damit truthy. Arrays und Objekte sind dagegen immer truthy – auch leere. JavaScript behandelt sie nämlich als Objekte, und alle Objekte sind truthy, egal was drinsteckt.
Wer von Python kommt, muss hier am stärksten umdenken: In Python sind [] und {} falsy. In JavaScript eben nicht.
So prüfst du richtig auf "leer"
Da [] und {} truthy sind, kannst du sie nicht einfach in ein if packen, um auf Leere zu prüfen. Sei lieber explizit:
Analog bei Strings – wenn du Strings, die nur aus Whitespace bestehen, ebenfalls als leer behandeln willst:
Truthy/falsy ist eine praktische Abkürzung – aber kein Ersatz dafür, sich zu überlegen, was „leer" für deine Daten eigentlich bedeutet.
JavaScript Boolean Coercion: Werte in echte Booleans umwandeln
Manchmal brauchst du wirklich ein true oder false und nicht nur irgendeinen truthy-Wert. Dafür haben sich zwei Schreibweisen etabliert:
Boolean(x) ist die explizite Umwandlung in einen Boolean. !!x macht im Grunde dasselbe, nur kürzer: Das erste ! wandelt den Wert in einen Boolean um und negiert ihn, das zweite ! dreht ihn wieder zurück. Beide Varianten sind üblich. !! ist knapper, Boolean() liest sich dafür klarer.
Die doppelte Negation !! begegnet dir oft in return-Statements, wenn eine Funktion sauber einen Boolean zurückgeben soll:
Truthy und Falsy mit && und ||
Die logischen Operatoren in JavaScript geben nicht etwa true oder false zurück, sondern einen der beiden Operanden. Welcher davon zurückkommt, hängt vom Wahrheitswert (truthy oder falsy) ab:
Genau deshalb ist value || defaultValue ein so beliebtes Muster für Default-Werte. Die Falle dabei: Alle Falsy-Werte werden über einen Kamm geschert – also auch 0 und "", die häufig völlig legitime Eingaben sind:
Wenn du wirklich nur bei null oder undefined auf einen Ersatzwert zurückgreifen willst, nimm lieber den Nullish-Coalescing-Operator ??. Dazu gibt es ein eigenes Kapitel.
Kurzreferenz
Druck dir das aus, klebs an deinen Monitor – und dann weiter im Text.
Als Nächstes: Iteratoren und Generatoren
Bedingungen und Schleifen hast du jetzt drauf. Im nächsten Kapitel geht's darum, wie JavaScript Werte bei Bedarf selbst erzeugen lässt. Iteratoren und Generatoren sind die Mechanik hinter for...of, dem Spread-Operator und vielen modernen APIs – und genau die schauen wir uns jetzt an.
Häufig gestellte Fragen
Welche Werte sind in JavaScript falsy?
Es gibt genau sieben: false, 0, -0, 0n (BigInt-Null), '' (leerer String), null, undefined und NaN. Alles andere ist truthy – auch '0', 'false', [] und {}. Wenn du dir diese kurze Liste einprägst, weißt du für jeden anderen Wert per Ausschlussverfahren automatisch die Antwort.
Ist ein leeres Array in JavaScript truthy oder falsy?
Truthy. if ([]) { ... } führt den Block tatsächlich aus – was alle überrascht, die von Python oder PHP kommen. Arrays und Objekte sind eben Objekte, und Objekte sind immer truthy, egal was drin steht. Um auf ein leeres Array zu prüfen, nimmst du explizit arr.length === 0.
Wie wandle ich einen Wert in einen Boolean um?
Zwei Varianten: Boolean(value) ist die explizite Form, und !!value ist die Kurzschreibweise (eine doppelte Negation, die erst coerced und dann wieder umdreht). Beide folgen denselben Truthy/Falsy-Regeln. Nutze sie immer dann, wenn du wirklich ein true/false brauchst und nicht nur einen truthy-artigen Wert.