Was ist „Falsy“ in JavaScript?

Oct 28, 2019

In JavaScript ist ein Wert falsy, wenn JavaScript’s eingebauten Typ Zwang konvertiert es zu false. Betrachten wir zum Beispiel die folgende if-Anweisung:

if (v) { console.log('v is not falsy');}

Die console.log() wird nur ausgeführt, wenn v nicht einer der folgenden Werte ist:

  • false
  • 0
  • 0n: 0 als BigInt
  • '': Leerstring
  • null
  • undefined
  • NaN

Diese 7 Werte sind die einzigen falsy Werte in JavaScript. Jeder Wert, der nicht falsy ist, ist truthy.

Insbesondere ist ein Nicht-Null-Objekt immer wahrheitsgemäß, selbst wenn seine valueOf() Funktion einen falschen Wert zurückgibt.

function isFalsy(v) { return !v;}// `false`. The object form of `0` is truthy, even though 0 is falsy.isFalsy(new Number(0));

Empfehlungen

Die Verwendung von wahrheitsgemäß/falsch für implizite Typenzwänge in ifAnweisungen ist typischerweise unübersichtlich. Es ist selten, dass die 7 falsy-Werte genau die Werte sind, auf die Sie achten wollen.

Angenommen, Sie implementieren eine Funktion, die prüft, ob eine Zeichenkette kürzer als 25 Zeichen ist.

function checkLength(v) { if (!v) { throw new Error('Must provide a string!'); } return v.length < 25;}

Unglücklicherweise wird checkLength('') einen Fehler auslösen, weil leere Zeichenkette falsy ist. Stattdessen sollten Sie prüfen, ob v eine Zeichenkette ist:

function checkLength(v) { if (typeof v !== 'string') { throw new Error('Must provide a string!'); } return v.length < 25;}

Nullwerte

Anstatt auf wahrheitsgemäße/falsche Werte zu prüfen, möchten Sie normalerweise auf „nullwertige“ Werte prüfen. Einer der häufigsten Anwendungsfälle für Falsy-Prüfungen ist es, sicherzustellen, dass man keinen TypeError: Cannot read property 'prop' of null-Fehler erhält, wenn man auf eine Eigenschaft mit dem Wert v zugreift.

Es ist sicher, auf v.prop zuzugreifen, wenn v nicht genau gleich null oder undefined ist. Auch NaN.prop ist in Ordnung.

const x = Number('abc');x; // NaNx.prop; // undefined

Prüfen, ob v == null äquivalent zu v === null || v === undefined ist.Mit anderen Worten, ein Wert ist nur dann lose gleich null, wenn er streng gleich null oder undefined ist. Die Prüfung, ob v == null gleich ist, ist also oft genauer als die Prüfung auf wahrheitsgemäße oder gefälschte Werte.

Weitere Grundlagen-Tutorials

  • Wie man Objekte in JavaScript vergleicht
  • Wie man überprüft, ob eine JavaScript-Variable nicht definiert ist
  • Der Unterschied zwischen let und var in JavaScript
  • JavaScript String Interpolation
  • Globale Variablen in JavaScript
  • Wie man auf `NaN` in JavaScript prüft
  • JavaScript Enums

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.