JavaScript bietet mehrere Möglichkeiten, undefinierte oder Nullwerte im Code zu verarbeiten. Zwei gängige Operatoren für diesen Zweck sind der Null-Koaleszenzoperator (??) und der logische ODER-Operator (||). Obwohl diese Operatoren auf den ersten Blick ähnlich erscheinen mögen, kann ihr Verhalten in bestimmten Situationen erheblich unterschiedlich sein. Das Verständnis der Unterschiede zwischen diesen beiden Operatoren ist wichtig, insbesondere für Anfänger, die präziseren und fehlerfreien Code schreiben möchten.
In diesem Leitfaden untersuchen wir den Unterschied zwischen ?? und || in JavaScript, indem Sie es Schritt für Schritt mit Beispielen aufschlüsseln, damit Sie in kürzester Zeit vom Nullpunkt zum Helden werden.
Der nullische Koaleszenzoperator ?? wird verwendet, um einen Fallback-Wert bereitzustellen, wenn mit null oder undefiniert umgegangen wird. Es prüft nur, ob ein Wert null oder undefiniert ist – und wenn ja, gibt es den bereitgestellten Fallback-Wert zurück.
Syntax:
let result = value ?? fallbackValue;
Wenn in diesem Ausdruck der Wert entweder null oder undefiniert ist, wird der FallbackValue zurückgegeben.
let name = null; let defaultName = name ?? 'John Doe'; console.log(defaultName); // Output: 'John Doe'
In diesem Beispiel ist der Name null, daher wird defaultName als Fallback „John Doe“ zugewiesen.
Der logische ODER-Operator || ist ein weiterer Operator, der für Fallback-Werte verwendet wird, aber er funktioniert anders. Es prüft, ob die linke Seite des Ausdrucks ein falscher Wert ist. In JavaScript umfassen falsche Werte null, undefiniert, falsch, 0, NaN und '' (leere Zeichenfolge).
Syntax:
let result = value || fallbackValue;
Wenn der Wert falsch ist, wird fallbackValue zurückgegeben.
let age = 0; let defaultAge = age || 18; console.log(defaultAge); // Output: 18
In diesem Fall ist das Alter 0, was ein falscher Wert ist, daher wird defaultAge 18 zugewiesen.
Auf den ersten Blick ?? und || scheint den gleichen Zweck zu erfüllen – die Bereitstellung von Fallback-Werten –, aber es gibt einen wichtigen Unterschied:
Dieser subtile Unterschied wird entscheidend, wenn Sie es mit falschen, aber gültigen Werten wie 0, '' oder falsch
zu tun habenlet result = value ?? fallbackValue;
Hier ist count 0, was ein gültiger, aber in JavaScript falscher Wert ist.
Die Wahl zwischen ?? und || hängt von dem spezifischen Verhalten ab, das Sie wünschen.
Beispiel:
let name = null; let defaultName = name ?? 'John Doe'; console.log(defaultName); // Output: 'John Doe'
In diesem Beispiel ist eine leere Zeichenfolge '' eine gültige Benutzereingabe, also ?? lässt es passieren, ohne es durch den Fallback zu ersetzen.
Beispiel:
let result = value || fallbackValue;
Hier wird „false“ als „falsy“ behandelt und der Fallback „Nicht angemeldet“ verwendet.
Da Sie nun den Unterschied kennen, schauen wir uns ein paar häufige Fehler an, die Anfänger oft machen, und wie man sie vermeidet.
let age = 0; let defaultAge = age || 18; console.log(defaultAge); // Output: 18
Problem: Sie wollten 0 als Ergebnis anzeigen, aber || hat es durch „Keine Punktzahl“ ersetzt, da 0 falsch ist.
Lösung: Verwendung ?? um 0 durchzulassen.
let count = 0; let defaultCount1 = count ?? 10; // Using nullish coalescing let defaultCount2 = count || 10; // Using logical OR console.log(defaultCount1); // Output: 0 console.log(defaultCount2); // Output: 10
let userInput = ''; let fallbackInput = userInput ?? 'default input'; console.log(fallbackInput); // Output: ''
Erklärung: userPreference ist null, daher wird der Fallback false verwendet. Das ist das richtige Verhalten für ??.
Ja, Sie können bei Bedarf beide Operatoren in verschiedenen Teilen desselben Ausdrucks verwenden.
Beispiel:
let isLoggedIn = false; let loginStatus = isLoggedIn || 'Not logged in'; console.log(loginStatus); // Output: 'Not logged in'
Dies prüft zunächst mit ??, ob null oder undefiniert ist. und sucht dann mit ||.
nach anderen falschen WertenDas ?? Der Operator wird in modernen Browsern unterstützt, aber für ältere Umgebungen müssen Sie möglicherweise einen Transpiler wie Babel verwenden.
Nein, ?? Prüft nur auf null und undefiniert, nicht auf andere falsche Werte wie false, 0 oder ''.
Verstehen Sie den Unterschied zwischen ?? und || in JavaScript ist entscheidend für das Schreiben von robustem und fehlerfreiem Code. Während beide Operatoren bei der Bereitstellung von Fallback-Werten hilfreich sind, unterscheidet sich ihr Verhalten bei der Behandlung falscher Werte. Verwenden ?? wenn Sie nach null oder undefiniert suchen und || verwenden müssen wenn Sie nach falschen Werten suchen möchten.
Wenn Sie diese Operatoren beherrschen, können Sie flexibleren und genaueren Code schreiben, der sich genau wie beabsichtigt verhält.
Das obige ist der detaillierte Inhalt vonNicht verwirren?? mit || in JavaScript: So unterscheiden sie sich!. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!