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

Was sind die Vorteile einer semantischen HTML-Struktur?

eins: 1. Semantische Tags sind lediglich HTML, CS...

Abfrage der Daten des Tages vor dem aktuellen Zeitintervall in MySQL

1. Hintergrund In tatsächlichen Projekten stoßen ...

Prinzip der MySQL-Paging-Analyse und Effizienzverbesserung

Prinzip der MySQL-Paging-Analyse und Effizienzver...

MySQL-Lernaufzeichnung: Blutiger Vorfall durch KEY-Partition verursacht

Nachfragehintergrund Ein Teil der Daten in der Ge...

Detaillierte Erläuterung des MySQL Workbench-Nutzungs-Tutorials

Inhaltsverzeichnis (I) Verwenden von Workbench zu...

So ermitteln Sie die Höhe des MySQL InnoDB B+-Baums

Vorwort Der Grund, warum die InnoDB-Engine von My...

So erstellen Sie manuell ein neues Image mit Docker

In diesem Artikel wird die Methode zum manuellen ...

Lassen Sie uns ausführlich über die LIMIT-Anweisung in MySQL sprechen

Inhaltsverzeichnis Frage Serverebene und Speicher...

Detaillierte Erklärung der Datentypen und Schemaoptimierung in MySQL

Ich lerne derzeit etwas über MySQL-Optimierung. D...