Optionale Verkettung kommt möglicherweise zu JavaScript

Optionale Verkettung ist derzeit in Bühne 1hier ist die Repo mit allen nötigen Informationen.

Was ist es?

Optionale Verkettung ermöglicht es uns, zu prüfen, ob ein Objekt existiert, bevor wir versuchen, auf seine Eigenschaften zuzugreifen. Einige andere Sprachen haben etwas Ähnliches. C# hat beispielsweise einen Null-Bedingungsoperator, der sich sehr ähnlich verhält wie die vorgeschlagene optionale Verkettung.

Warum brauchen wir es?

Mussten Sie schon einmal prüfen, ob Objekte oder Arrays vorhanden sind, bevor Sie auf deren Eigenschaften zugreifen? Wenn Sie es vergessen, kann es ein bisschen so aussehen:

if(specimen && specimen.arms && specimen.arms.length > 2) 
  console.log("This is probably an alien");

Der Grund, warum wir diese Überprüfungen durchführen, liegt darin, dass JavaScript anonyme Objekte zulässt, die nicht unbedingt eine Struktur oder ein Schema haben. Wenn wir also in einem Objektbaum nicht nach Eltern suchen, erhalten wir viele Fehler, die so aussehen:

TypeError-Fehlermeldung

Denn zumindest im Fehlerfall specimen existiert, hat aber keine arms Eigentum. Deshalb haben wir versucht zu bekommen length von etwas, das war undefined.

Also, was ist der Vorschlag?

Stattdessen können wir Kette optionale Überprüfungen wie diese:

if(specimen?.arms?.length > 2) 
  console.log("This is probably an alien");

Beachten Sie jedoch, dass der Optional Chaining-Operator ist ?. nicht ? – Dies bedeutet, dass es beim Zugriff auf ein Element in einem Array stattdessen so aussieht:

var firstArm = specimen?.arms?.[0]; //CORRECT
var secondArm = specimen?.arms?[1]; //WRONG

Ebenso, wenn Sie es verwenden, um das Vorhandensein von Funktionen zu überprüfen, bevor Sie sie ausführen:

var kickPromise = specimen?.kick?.(); //CORRECT
var punchPromise = specimen?.punch?(); //WRONG

In diesem Fall prüfen wir ggf kick existiert, bevor es als Funktion aufgerufen wird!

Wie funktioniert es?

Der Bediener prüft, ob was dran ist Links von ?. ist null oder undefined. Wenn dies der Fall ist, schließt der Ausdruck kurz und kehrt zurück undefined. Andernfalls wird der Ausdruck weiterhin ausgewertet, als ob nichts falsch wäre.

Wann kann ich es verwenden?

Nun, es ist immer noch ein Vorschlag, also noch nicht in Vanilla JavaScript. Es ist jedoch verwendbar mit Babel!

Um über den Status des Vorschlags auf dem Laufenden zu bleiben, ein tieferes Verständnis zu haben und einige Beispiele zu überprüfen, sollten Sie überprüfen ihr GitHub-Repo! Sie finden auch die Spezifikationen hieraber ich werde nicht darauf eingehen, da mir das meiste dieses Dokuments zu viel wird 😅

Vielen Dank!

Gern geschehen! ❤️

Similar Posts

Leave a Reply

Your email address will not be published.