Heim > Web-Frontend > js-Tutorial > George und Robert betreten eine Bar ...

George und Robert betreten eine Bar ...

PHPz
Freigeben: 2024-07-16 17:02:50
Original
938 Leute haben es durchsucht

George and Robert walk into a bar...

Der Titel könnte so klingen, als würde hier nur ein Witz auf Sie warten (ein SEO-Desaster, ich weiß). Tut mir leid, Sie enttäuschen zu müssen. In diesem Beitrag geht es eigentlich um die in ES2021 eingeführten logischen Zuweisungsoperatoren von JavaScript. Lesen Sie weiter, um herauszufinden, was George und Robert damit zu tun haben...

Historischer Hintergrund

Logische Zuweisungsoperatoren sind im Wesentlichen eine Mischung aus boolescher Logik und der Zuweisungsoperation. Aber hinter diesen Komponenten steckt mehr, als man zunächst denkt.

Zum einen sind sich viele, wenn nicht die meisten Entwickler möglicherweise nicht bewusst, wie tief die boolesche Logik in der Struktur moderner Computer verwoben ist. Es erstreckt sich von Computerschaltungen bis hin zu bedingten Anweisungen in Ihrem Code.

Auch wir verwenden das Gleichheitszeichen täglich, oft ohne viel darüber nachzudenken. Dieses Symbol, das heute sowohl in der Mathematik als auch in der Codierung von entscheidender Bedeutung ist, wurde bereits im 16. Jahrhundert für mathematische Zwecke erfunden. Rund 400 Jahre später, in den 1950er Jahren, fand es Eingang in die Computerprogrammierung.

Wenn dieser historische Kontext für Sie nicht im Geringsten interessant klingt, können Sie gerne mit dem Abschnitt „Logische Zuweisungsoperatoren verstehen“ fortfahren. Ansonsten begeben Sie sich mit mir auf eine kurze Reise in die Vergangenheit.

George Boole

Die frühesten Studien zur Logik werden den alten Griechen zugeschrieben, insbesondere Aristoteles, der oft als „Vater der Logik“ bezeichnet wird. Er entwickelte ein formales Logiksystem, das den Grundstein für die Verwendung logischer Operatoren legte.

Die eigentliche mathematische Grundlage logischer Operatoren, wie wir sie heute kennen, nahm mit dem Aufkommen der symbolischen Logik im 19. Jahrhundert Gestalt an. Es verwendet Symbole, um logische Formen und Strukturen darzustellen, was komplexere und abstraktere Überlegungen ermöglicht.

George Boole, ein englischer Mathematiker und Logiker des 19. Jahrhunderts, führte in seinem bahnbrechenden Werk „The Laws of Thought“ (1854) einen algebraischen Ansatz in die Logik ein. Hier können Werte entweder wahr oder falsch sein und auf diesen Werten können analog zu algebraischen Operationen Operationen ausgeführt werden. Dieses System umfasste die grundlegenden logischen Operatoren:

  • UND (Konjunktion)
  • ODER (Disjunktion)
  • NICHT (Negation)

Aufbauend auf Booles Arbeit erweiterten andere Mathematiker und Logiker den Umfang und die Tiefe der symbolischen Logik. Und Mitte des 20. Jahrhunderts fand sie im aufstrebenden Bereich der Informatik einen neuen und fruchtbaren Boden. Die binäre Natur der Booleschen Logik erwies sich als perfekt geeignet für die digitalen Schaltkreise im Herzen von Computern, wo Daten als eine Reihe von Nullen und Einsen dargestellt werden konnten und logische Operatoren den Fluss dieser Daten steuern konnten.

Logische Operatoren wurden zu einem grundlegenden Bestandteil von Programmiersprachen und ermöglichten die Konstruktion komplexer Rechenlogik und Entscheidungsprozesse in Software. Heute sind sie fester Bestandteil der Syntax nahezu jeder Programmiersprache.

Robert Recorde

Das Gleichheitszeichen wurde 1557 vom walisischen Mathematiker Robert Recorde in seinem Buch „The Whetstone of Witte“ eingeführt. Recorde wurde es leid, in seinem Werk immer wieder „ist gleich“ zu schreiben, und so wählte er zwei parallele Linien gleicher Länge als Symbol für Gleichheit. Wie er es ausdrückte, lag es daran, dass „nie zwei Thyngen gleich sein können“. Dies war eine bedeutende Entwicklung in der mathematischen Notation und bot eine prägnante und klare Möglichkeit, Gleichheit auszudrücken.

In den Anfängen der Programmierung, insbesondere bei Maschinencode und Assemblersprachen, ging es beim Konzept der „Zuweisung“ eher um das Speichern und Verschieben von Daten zwischen Registern und Speicherorten. Mithilfe spezifischer Opcodes wurden Anweisungen gegeben, die die Maschine anwiesen, diese Vorgänge auszuführen.

Als höhere Programmiersprachen entwickelt wurden, bestand Bedarf an einer abstrakteren und für den Menschen lesbaren Möglichkeit, den Vorgang der Zuweisung von Werten zu Variablen darzustellen. Dies führte zur Einführung des Gleichheitszeichens als Zuweisungsoperator in vielen Sprachen, beginnend mit FORTRAN in den 1950er Jahren.

Die Verwendung von = für die Zuweisung führte zu Unklarheiten hinsichtlich der mathematischen Bedeutung von Gleichheit. Dies führte zur Einführung verschiedener Symbole, um die Absicht bei der Programmierung zu verdeutlichen:

  • Algol wurde in den 1960er Jahren entwickelt und führte das :=-Symbol für Zuweisungen ein, um es vom Gleichheitsvergleich zu unterscheiden.
  • C machte später die Verwendung von = für Zuweisungen und == für Gleichheitstests populär, eine Konvention, der viele nachfolgende Sprachen folgten.

Im Laufe der Zeit haben Programmiersprachen verschiedene Formen von Zuweisungsoperatoren eingeführt, um verschiedene Operationen effizient abzuwickeln, wie z. B. zusammengesetzte Zuweisungsoperatoren (+=, -= usw.) und in jüngerer Zeit auch logische Zuweisungsoperatoren in JavaScript.

Logische Zuweisungsoperatoren verstehen

Logische Zuweisungsoperatoren sind syntaktische Zucker in JavaScript, die Zuweisungen (=) mit einem logischen (&&, ||) oder nullischen Koaleszenzoperator (??) kombinieren. Es gibt drei Arten:

  • Logische UND-Zuweisung (&&=): Weist den Wert rechts der Variablen links nur dann zu, wenn die linke Variable wahr ist.
  • Logische ODER-Zuweisung (||=): Weist den Wert rechts der Variablen links nur dann zu, wenn die linke Variable falsch ist.
  • Nullish Coalescing Assignment (??=): Weist den Wert rechts der Variablen links nur dann zu, wenn die linke Variable null oder undefiniert ist.

Logische UND-Zuweisung (&&=)

Der &&=-Operator ist eine Abkürzung zum Festlegen des Werts einer Variablen nur dann, wenn diese aktuell einen wahren Wert enthält. Dies ist besonders nützlich in Szenarien, in denen eine Aktion nur dann ausgeführt werden soll, wenn eine bestimmte Bedingung weiterhin erfüllt ist.

Beispielanwendungsfall: Funktionsumschaltung

Stellen Sie sich ein Szenario vor, in dem bestimmte Funktionen nur für Administratoren aktiviert werden sollten:

const isAdmin = user.isAdmin();
let canAccessDashboard = isAdmin;

canAccessDashboard &&= user.isAuthenticated();
console.log(canAccessDashboard); // true if user is authenticated, otherwise false
Nach dem Login kopieren

Dieses Code-Snippet stellt sicher, dass canAccessDashboard nur dann wahr ist, wenn sowohl isAdmin als auch user.isAuthenticated() wahr sind, wodurch die Funktion effektiv hinter zwei Bedingungen geschützt wird.

Logische ODER-Zuweisung (||=)

Mit dem ||=-Operator können Sie einer Variablen einen Wert zuweisen, wenn die Variable derzeit einen falschen Wert enthält (z. B. null, undefiniert, 0, falsch, „“). Dies ist unglaublich nützlich, um Standardwerte festzulegen.

Beispielanwendungsfall: Standardeinstellungen festlegen

const userSettings = {
  theme: null,
};

// Set default theme if none is specified
userSettings.theme ||= "dark";
console.log(userSettings.theme); // Outputs 'dark'
Nach dem Login kopieren

Dieser Operator ist ideal zum Initialisieren von Variablen, die nicht festgelegt wurden, um sicherzustellen, dass Ihre Anwendung einen sinnvollen Standard verwendet, ohne potenziell aussagekräftige falsche Werte wie 0 oder falsch zu überschreiben.

Nullish Coalescing-Auftrag (??=)

Das ?? Der als Nullish-Coalescing-Operator bekannte Operator ist eine relativ neue Ergänzung zu Programmiersprachen. Es handelt sich nicht um einen logischen Zuweisungsoperator im engeren Sinne, auch wenn die ES2021-Spezifikation ihn als solchen klassifiziert, da er nicht auf einem logischen Operator basiert. Stattdessen ist seine Entwicklung enger an die praktischen Anforderungen der Programmierung gebunden, insbesondere an den sauberen und vorhersehbaren Umgang mit Null- und undefinierten Werten.

Der ??=-Operator wird verwendet, um einer Variablen genau dann einen Wert zuzuweisen, wenn die Variable derzeit null oder undefiniert ist. Dies ist präziser als der ||=-Operator, der auch andere falsche Werte berücksichtigt.

Beispielanwendungsfall: Konfigurationsstandardwerte

const config = {
  timeout: 0,
};

config.timeout ??= 5000; // Set default timeout if not specified, i.e. undefined, or null
console.log(config.timeout); // Outputs 0, preserving the explicitly set falsy value
Nach dem Login kopieren

Dieser Operator ist besonders nützlich in Konfigurationen und Einstellungen, bei denen Standardwerte nur fehlende Werte ergänzen sollen, ohne andere falsche, aber gültige Einstellungen wie 0 zu ersetzen.

Praktische Vorteile und Überlegungen

Die Verwendung logischer Zuweisungsoperatoren anstelle von if- oder ternären Anweisungen reduziert die Menge an Code, die Sie schreiben müssen, und kann Ihre Absichten für andere Entwickler klarer machen. Wie bei vielen Funktionen liegt der Schlüssel darin, diese Operatoren mit Bedacht zu verwenden, insbesondere wenn es um falsche Werte geht, die im Kontext Ihres Codes gültig sind.

Zusätzlicher Hinweis

Es gibt weitere Zuweisungsoperatoren in JavaScript, wie den Linksverschiebungs-Zuweisungsoperator (<<=). Diese scheinen mir weniger allgemein anwendbar zu sein, könnten aber irgendwann einen weiteren Beitrag wert sein ...

(Titelbild oben von starline auf Freepik)

Das obige ist der detaillierte Inhalt vonGeorge und Robert betreten eine Bar .... Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage