So vermeiden Sie undefinierte Eigenschaftsfehler
In JavaScript stößt man häufig auf Arrays, die eine Mischung aus Objekten mit unterschiedlichen Verschachtelungsebenen enthalten. Dies kann zu Fehlern beim Durchlaufen des Arrays führen, wenn nicht alle Objekte die gleiche Tiefe haben.
Das Problem:
Beim Versuch, auf verschachtelte Eigenschaften eines Objekts zuzugreifen, JavaScript gibt einen Fehler aus, wenn der Pfad zu dieser Eigenschaft nicht existiert. Zum Beispiel im folgenden Code:
var test = [{'a':{'b':{'c':"foo"}}}, {'a': "bar"}]; for (i=0; i<test.length; i++) { console.log(a.b.c); }
Die Schleife gibt den Fehler „Eigenschaft von undefiniert kann nicht gelesen werden“ aus, wenn i 1 ist, da das zweite Element im Testarray nur eine einzige a-Eigenschaft hat. keine verschachtelte b-Eigenschaft.
Die Lösung:
Eine Möglichkeit, diese Fehler zu vermeiden, besteht darin, den bedingten Operator zur Überprüfung zu verwenden ob jede Eigenschaft vorhanden ist, bevor darauf zugegriffen wird:
for (i=0; i<test.length; i++) { if (a.b) { console.log(a.b.c); } }
Dieser Ansatz kann jedoch mühsam werden, wenn Sie tief verschachtelte Objekte oder mehrere Eigenschaften überprüfen müssen.
Optionale Verkettung (ES2020) :
Für JavaScript-Versionen nach ES2020 bietet die optionale Verkettung (?.) eine präzisere Möglichkeit zur Überprüfung Überprüfen Sie die Existenz der Eigenschaft, bevor Sie darauf zugreifen. Zum Beispiel:
for (i=0; i<test.length; i++) { console.log(a?.b?.c); }
Wenn a oder b für kein Objekt im Array existiert, gibt der optionale Verkettungsoperator undefiniert zurück, anstatt einen Fehler auszulösen.
getSafe () Hilfsfunktion (vor ES2020):
Für JavaScript-Versionen vor ES2020 können Sie eine Hilfsfunktion definieren, die verwendet ein Try/Catch-Block für den sicheren Zugriff auf Eigenschaften:
function getSafe(fn, defaultVal) { try { return fn(); } catch (e) { return defaultVal; } } for (i=0; i<test.length; i++) { console.log(getSafe(() => a.b.c)); }
Diese Funktion gibt den Eigenschaftswert zurück, wenn er existiert, oder einen Standardwert, wenn die Eigenschaft nicht existiert.
Das obige ist der detaillierte Inhalt vonWie verhindert man den Fehler „Eigenschaft von undefiniertem Objekt kann nicht gelesen werden' in JavaScript?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!