Verwendung des optionalen Verkettungsoperators von JS

Verwendung des optionalen Verkettungsoperators von JS

Vorwort

Der optionale Verkettungsoperator (?.) ermöglicht das Lesen des Werts einer Eigenschaft am Ende einer Kette, ohne dass die Gültigkeit jeder Referenz in der Kette explizit überprüft werden muss. Der Unterschied besteht darin, dass kein Fehler auftritt, wenn die Referenz null oder undefiniert ist, und der Kurzschluss-Rückgabewert des Ausdrucks undefiniert ist. Bei Verwendung mit einem Funktionsaufruf wird „undefined“ zurückgegeben, wenn die angegebene Funktion nicht existiert.

Der optionale Verkettungsoperator verkürzt und prägnanter die Ausdruckswurzeln beim Versuch, auf möglicherweise nicht vorhandene Objekteigenschaften zuzugreifen. Der optionale Verkettungsoperator ist auch beim Untersuchen des Inhalts eines Objekts hilfreich, wenn Sie nicht sicher sind, welche Eigenschaften vorhanden sein müssen.

Optionaler Verkettungsoperator (?.)

Grammatik

obj?.prop
obj?.[Ausdruck]
Funktion?.(Argumente)

beschreiben

Der optionale Verkettungsoperator bietet eine Möglichkeit, den Zugriff auf den Wert eines verbundenen Objekts zu vereinfachen, wenn die Referenz oder Funktion, die durch das verbundene Objekt übergeben wird, undefiniert oder null sein kann.
Betrachten Sie beispielsweise ein Objekt obj, das eine verschachtelte Struktur hat. Ohne optionale Verkettung müssen Sie beim Nachschlagen einer tief verschachtelten Untereigenschaft die Verweise zwischen ihnen überprüfen, zum Beispiel:

let nestedProp = obj.erstes && obj.erstes.zweites

Um Fehler zu vermeiden, stellen Sie vor dem Zugriff auf obj.first.second sicher, dass der Wert von obj.first weder null noch undefiniert ist. Wenn Sie einfach auf obj.first.second zugreifen, ohne obj.first zu überprüfen, wird möglicherweise ein Fehler ausgegeben.
Mit dem optionalen Verkettungsoperator (?.) müssen wir den Status von obj.first nicht mehr explizit prüfen, bevor wir auf obj.first.second zugreifen und dann eine Kurzschlussauswertung verwenden, um das Endergebnis zu erhalten:

let nestedProp = obj.erste?.zweite

Durch die Verwendung des ?.-Operators anstelle des .-Operators überprüft JavaScript implizit, ob obj.first weder null noch undefiniert ist, bevor versucht wird, auf obj.first.second zuzugreifen. Wenn obj.first null oder undefiniert ist, wird der Ausdruck die Berechnung kurzschließen und direkt „undefined“ zurückgeben.

Dies entspricht dem folgenden Ausdruck, allerdings wird dabei keine temporäre Variable erstellt:

let temp = obj.first
let nestedProp = ((temp === null || temp === undefiniert) ? undefiniert : temp.Sekunde) 

verwenden

Wir können verkettbare Operatoren mit dem Babel-Compiler verwenden.

babel

Garn hinzufügen @babel/plugin-proposal-optional-chaining --dev

Fügen Sie eine .babelrc-Datei hinzu

{
  "Plugins": ["@babel/Plugin-Vorschlag-optional-Chaining"]
}

Verwendung in Create-React-App

Standardmäßig erlaubt create-react-app keine Änderung der Babel-Konfiguration. Hier müssen wir zwei zusätzliche Module installieren, um eine Ergänzung der Standardkonfiguration zu ermöglichen.

Garn hinzufügen anpassen-cra reagieren-app-rewired --dev

Fügen Sie die Datei config-overrides.js hinzu

const { useBabelRc, override } = erfordern('customize-cra');
module.exports = überschreiben(useBabelRc());

Ändern Sie package.json

"Skripte": {
  "Start": "React-App-Rewired-Start",
  "Build": "React-App-Rewired-Build",
  „Test“: „React-App-Rewired-Test --env=jsdom“
}

eslint

Nach der Installation des Babel-Compilers können Sie den ?.-Operator verwenden. Wenn Sie jedoch eslint verwenden, müssen Sie babel-eslint installieren, um diese neue Syntax zu erkennen.

Garn hinzufügen babel-eslint --dev

Fügen Sie die .eslintrc-Datei hinzu

{
  "Parser": "babel-eslint",
  "Regeln": {
    "streng": 0
  }
}

Verwendung in vscode

Der JS-Validator von vscode erkennt derzeit den ?.-Operator nicht, daher wird eine Fehlerwarnung ausgegeben:


So beheben Sie die Fehlerwarnung:

Installieren Sie die vscode-Erweiterung ESLint, suchen und installieren Sie ESLint im Erweiterungsspeicher.

Ändern Sie die vscode-Konfiguration (.vscode/settings.json):

{
  "eslint.alwaysShowStatus": wahr,
  "eslint.autoFixOnSave": wahr,
  "javascript.validate.enable": false, // Hauptsächlich dies, schalte den JS-Validator von vscode aus "[javascript]": {
    "editor.formatOnSave": falsch,
  },
  "[javascriptreact]": {
  "editor.formatOnSave": falsch,
  },
}

Quelle: Optionaler Verkettungsoperator

Dies ist das Ende dieses Artikels über die Verwendung des optionalen Verkettungsoperators von js. Weitere relevante Inhalte zum optionalen Verkettungsoperator von js finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • Umfassende Analyse der Operatoren "&&" und "||" in JavaScript (Zusammenfassung)
  • Einige magische Effekte des Pluszeichen-Operators (+) in JavaScript
  • Anwendungsbeispiel für den JavaScript-Löschoperator
  • Anwendungsfälle für JavaScript-Operatoren (~, &, |, ^, <<, >>)
  • Analysieren von Objekten, die vom Löschoperator in JavaScript nicht gelöscht werden können
  • Zusammenfassung der JS-Operatoren
  • Detaillierte Erklärung des JavaScript-Spread-Operators
  • Analyse des Booleschen Operators in JavaScript && || !

<<:  Centos7.5 installiert die Bereitstellung des binären Pakets mysql5.7.24

>>:  MYSQL8.0.13 kostenlose Installationsversion Konfiguration Tutorial Beispiel detaillierte Erklärung

Artikel empfehlen

Beispiele für dl-, dt- und dd-Listenbezeichnungen

Die Tags dd und dt werden für Listen verwendet. N...

JavaScript-Flusskontrolle (Schleife)

Inhaltsverzeichnis 1. for-Schleife 2. Doppelte fo...

Detaillierte Erklärung zum Abrufen der IP-Adresse eines Docker-Containers

1. Nach dem Betreten des Containers Katze /etc/ho...

MySQL 5.7.18 Green Edition Download- und Installations-Tutorial

Dieser Artikel beschreibt den detaillierten Vorga...

Ursachen und Lösungen für die Front-End-Ausnahme 502 Bad Gateway

Inhaltsverzeichnis 502 Bad Gateway Fehlerbildung ...

Detaillierte Schritte zur Installation von Nginx unter Linux

1. Nginx-Installationsschritte 1.1 Offizielle Web...

Detaillierte Erläuterung des Vue-Router-Routings

Inhaltsverzeichnis 1. Grundlegende Verwendung 2. ...

MySQL 8.0.20 Installations-Tutorial mit Bildern und Text (Windows 64-Bit)

1: Download von der offiziellen MySQL-Website htt...

Zusammenfassung von 6 Methoden zur Anzeige von Linux-Protokollen

Als Backend-Programmierer haben Sie an vielen Ste...

Detaillierte Erklärung zum schnellen Erstellen einer Blog-Website mit Docker

Inhaltsverzeichnis 1. Vorbereitung 2. Bereitstell...

Referenzschreiben im JS- und CSS-Stil

CSS: 1. <link type="text/css" href=&q...