Heim > Web-Frontend > js-Tutorial > Wie verhindert man den Fehler „Eigenschaft von undefiniertem Objekt kann nicht gelesen werden' in JavaScript?

Wie verhindert man den Fehler „Eigenschaft von undefiniertem Objekt kann nicht gelesen werden' in JavaScript?

Barbara Streisand
Freigeben: 2024-12-06 03:39:10
Original
223 Leute haben es durchsucht

How to Prevent

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);
}
Nach dem Login kopieren

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);
    }
}
Nach dem Login kopieren

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);
}
Nach dem Login kopieren

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));
}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage