Bei der Arbeit mit komplexen Datenstrukturen kommt es häufig zu Fehlern im Zusammenhang mit undefinierten Eigenschaften. Betrachten Sie das folgende Beispiel:
// This array contains a mix of nested objects and non-nested values var test = [{'a':{'b':{'c':"foo"}}}, {'a': "bar"}];
Das Durchlaufen von Tests kann zu Fehlern beim Zugriff auf Eigenschaften verschachtelter Objekte führen, die möglicherweise nicht vorhanden sind. Beispielsweise löst der folgende Code beim Zugriff auf a.b.c einen Fehler aus:
for (i=0; i<test.length; i++) { console.log(a.b.c); // Throws error on i==1 }
Um solche Fehler zu vermeiden, können mehrere Ansätze verwendet werden:
Optional Chaining (ES2020) und TypeScript 3.7
Update: Für moderne Browser und TypeScript, die empfohlene Lösung ist optionaler Verkettungsoperator (?.):
obj?.a?.lot?.of?.properties
Funktionsbasierte Problemumgehung (vor ES2020 und vor TypeScript 3.7)
A Eine einfache Problemumgehung besteht darin, eine Hilfsfunktion zu verwenden:
function getSafe(fn, defaultVal) { try { return fn(); } catch (e) { return defaultVal; } } // Use the function to access the property safely console.log(getSafe(() => obj.a.lot.of.properties));
Diese Funktion gibt das Ergebnis des Aufrufs der bereitgestellten Funktion zurück, oder a Standardwert, wenn ein Fehler auftritt. Mit diesem Ansatz können Sie Fehler vermeiden und bedingt auf verschachtelte Eigenschaften zugreifen:
console.log(getSafe(() => obj.a.lot.of.properties, 'nothing'));
Das obige ist der detaillierte Inhalt vonWie kann ich den Fehler „Eigenschaft von undefiniertem Objekt kann nicht gelesen werden' in JavaScript vermeiden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!