Der Titel könnte so klingen, als würde hier nur ein Witz auf Sie warten (ein SEO-Desaster, ich weiß). Entschuldigung dich zu enttäuschen. 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...
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.
Wir verwenden das Gleichheitszeichen auch jeden Tag, oft ohne groß 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 Zeitreise zurück.
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 zur Darstellung logischer Formen und Strukturen, 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:
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.
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:
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 sind syntaktische Zucker in JavaScript, die Zuweisungen (=) mit einem logischen (&&, ||) oder nullischen Koaleszenzoperator (??) kombinieren. Es gibt drei Typen:
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 erfüllt bleibt.
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
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.
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'
Dieser Operator ist ideal zum Initialisieren von Variablen, die nicht festgelegt wurden, um sicherzustellen, dass Ihre Anwendung einen sinnvollen Standard verwendet, ohne potenziell sinnvolle falsche Werte wie 0 oder falsch zu überschreiben.
Der ?? 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
Dieser Operator ist besonders nützlich in Konfigurationen und Einstellungen, in denen Standardwerte nur fehlende Werte ergänzen sollen, ohne andere falsche, aber gültige Einstellungen wie 0 zu ersetzen.
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.
Es gibt weitere Zuweisungsoperatoren in JavaScript, wie den Linksverschiebungs-Zuweisungsoperator (
(Titelbild oben von Starline auf Freepik)
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3