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 if
Anweisungen 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