This article is currently in the process of being translated into German (~98% done).
Truthy & Falsy
In den meisten Programmiersprachen sowie in der Mathematik ist das Konzept von Wahr und Falsch vollständig binär: Entweder etwas ist wahr, sonst ist es falsch. Aber in JavaScript ist das Konzept von Wahr und Falsch etwas erweitert, weil die Sprache im Allgemeinen ziemlich locker ist und nicht so streng wie andere Programmiersprachen.
In der Praxis bedeutet dies, dass JavaScript manchmal etwas als entweder true oder false auswertet, obwohl es nicht vollständig true oder false ist. Der Zweck besteht einfach darin, die Dinge einfacher und weniger kompliziert für Sie zu machen, aber wenn Sie dies nicht wissen oder wenn Sie es für einen Moment vergessen, könnten die Dinge etwas verwirrend werden.
Erlauben Sie mir also, Ihnen ein neues Konzept vorzustellen: Truthy and Falsy. Sie existieren nur als Konzepte - Sie werden keine Schlüsselwörter dafür in JavaScript finden, und Sie werden nicht in der Lage sein, gegen einen Wahr- oder Falschwert zu prüfen. Stattdessen hat JavaScript eine zweite Reihe von Operatoren eingeführt, um zu überprüfen, ob etwas vollständig wahr oder vollständig falsch ist. Diese werden als strenge Operatoren bezeichnet, z. B. der strenge Gleichheitsoperator, bei dem wir drei Gleichheitszeichen anstelle von zwei verwenden, wenn wir zwei Werte vergleichen.
Wir werden in einem kommenden Kapitel viel mehr über die verschiedenen Operatoren von JavaScript sprechen, einschließlich der strengen, aber für jetzt lassen Sie uns mehr darüber sprechen, was als Truthy oder Falsy betrachtet werden kann.
Truthy
In JavaScript sind alle Werte Truthy, es sei denn, sie sind speziell als Falsy definiert. JavaScript verwendet Typumwandlung, um etwas in einen booleschen Wert umzuwandeln, wenn es in einem Kontext verwendet wird, der dies erfordert, wie z. B. in einer Schleife oder einer if-Anweisung. Betrachten Sie beispielsweise die folgenden Beispiele von Werten, die als wahr behandelt werden, weil sie Truthy sind:
if(true)
alert("truthy");
if(42)
alert("truthy");
if("hello world")
alert("truthy");
Wenn Sie dieses Beispiel ausführen, werden Sie feststellen, dass alle drei IF-Anweisungen als wahr ausgewertet werden. Aber warum ist "hello world" wahr? Weil es einen tatsächlichen Wert enthält und JavaScript es daher als truthy betrachtet, wenn es in einem Kontext verwendet wird, in dem true oder false erforderlich ist.
Falsy
Im Allgemeinen werden alle Werte, die entweder null, undefined oder leer sind, als Falsy betrachtet und daher als false behandelt, wenn sie in einem booleschen Kontext wie Schleifen und if-Anweisungen verwendet werden. Hier sind ein paar Beispiele:
if(false)
alert("falsy");
if(null)
alert("falsy");
if(0)
alert("falsy");
if("")
alert("falsy");
Wenn Sie dieses Beispiel ausführen, werden Sie feststellen, dass keine der Alerts ausgelöst wird - alle oben genannten IF-Anweisungen werden in diesem Kontext als falsch betrachtet.
Zusammenfassung
Wenn JavaScript etwas als entweder wahr oder falsch benötigt, zum Beispiel beim Auswerten der Bedingung für eine Schleife oder eine if-Anweisung, wird es zur Typumwandlung greifen, wenn nötig, um Werte, die keine tatsächlichen Booleans sind, in true oder false umzuwandeln. Das Ergebnis davon wird als Truthy und Falsy bezeichnet, weil sie zwar nicht wirklich true oder false sind, aber nahe genug daran sind, damit JavaScript eine Entscheidung basierend auf ihnen treffen kann, wie in den Beispielen dieses Artikels illustriert.