George und Robert betreten eine 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
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'
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
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!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen











Python eignet sich besser für Anfänger mit einer reibungslosen Lernkurve und einer kurzen Syntax. JavaScript ist für die Front-End-Entwicklung mit einer steilen Lernkurve und einer flexiblen Syntax geeignet. 1. Python-Syntax ist intuitiv und für die Entwicklung von Datenwissenschaften und Back-End-Entwicklung geeignet. 2. JavaScript ist flexibel und in Front-End- und serverseitiger Programmierung weit verbreitet.

Zu den Hauptanwendungen von JavaScript in der Webentwicklung gehören die Interaktion der Clients, die Formüberprüfung und die asynchrone Kommunikation. 1) Dynamisches Inhaltsaktualisierung und Benutzerinteraktion durch DOM -Operationen; 2) Die Kundenüberprüfung erfolgt vor dem Einreichung von Daten, um die Benutzererfahrung zu verbessern. 3) Die Aktualisierung der Kommunikation mit dem Server wird durch AJAX -Technologie erreicht.

Die Anwendung von JavaScript in der realen Welt umfasst Front-End- und Back-End-Entwicklung. 1) Zeigen Sie Front-End-Anwendungen an, indem Sie eine TODO-Listanwendung erstellen, die DOM-Operationen und Ereignisverarbeitung umfasst. 2) Erstellen Sie RESTFUFFUPI über Node.js und express, um Back-End-Anwendungen zu demonstrieren.

Es ist für Entwickler wichtig, zu verstehen, wie die JavaScript -Engine intern funktioniert, da sie effizientere Code schreibt und Leistungs Engpässe und Optimierungsstrategien verstehen kann. 1) Der Workflow der Engine umfasst drei Phasen: Parsen, Kompilieren und Ausführung; 2) Während des Ausführungsprozesses führt die Engine dynamische Optimierung durch, wie z. B. Inline -Cache und versteckte Klassen. 3) Zu Best Practices gehören die Vermeidung globaler Variablen, die Optimierung von Schleifen, die Verwendung von const und lass und die Vermeidung übermäßiger Verwendung von Schließungen.

Python und JavaScript haben ihre eigenen Vor- und Nachteile in Bezug auf Gemeinschaft, Bibliotheken und Ressourcen. 1) Die Python-Community ist freundlich und für Anfänger geeignet, aber die Front-End-Entwicklungsressourcen sind nicht so reich wie JavaScript. 2) Python ist leistungsstark in Bibliotheken für Datenwissenschaft und maschinelles Lernen, während JavaScript in Bibliotheken und Front-End-Entwicklungsbibliotheken und Frameworks besser ist. 3) Beide haben reichhaltige Lernressourcen, aber Python eignet sich zum Beginn der offiziellen Dokumente, während JavaScript mit Mdnwebdocs besser ist. Die Wahl sollte auf Projektbedürfnissen und persönlichen Interessen beruhen.

Sowohl Python als auch JavaScripts Entscheidungen in Entwicklungsumgebungen sind wichtig. 1) Die Entwicklungsumgebung von Python umfasst Pycharm, Jupyternotebook und Anaconda, die für Datenwissenschaft und schnelles Prototyping geeignet sind. 2) Die Entwicklungsumgebung von JavaScript umfasst Node.JS, VSCODE und WebPack, die für die Entwicklung von Front-End- und Back-End-Entwicklung geeignet sind. Durch die Auswahl der richtigen Tools nach den Projektbedürfnissen kann die Entwicklung der Entwicklung und die Erfolgsquote der Projekte verbessert werden.

C und C spielen eine wichtige Rolle in der JavaScript -Engine, die hauptsächlich zur Implementierung von Dolmetschern und JIT -Compilern verwendet wird. 1) C wird verwendet, um JavaScript -Quellcode zu analysieren und einen abstrakten Syntaxbaum zu generieren. 2) C ist für die Generierung und Ausführung von Bytecode verantwortlich. 3) C implementiert den JIT-Compiler, optimiert und kompiliert Hot-Spot-Code zur Laufzeit und verbessert die Ausführungseffizienz von JavaScript erheblich.

Python eignet sich besser für Datenwissenschaft und Automatisierung, während JavaScript besser für die Entwicklung von Front-End- und Vollstapel geeignet ist. 1. Python funktioniert in Datenwissenschaft und maschinellem Lernen gut und unter Verwendung von Bibliotheken wie Numpy und Pandas für die Datenverarbeitung und -modellierung. 2. Python ist prägnant und effizient in der Automatisierung und Skripten. 3. JavaScript ist in der Front-End-Entwicklung unverzichtbar und wird verwendet, um dynamische Webseiten und einseitige Anwendungen zu erstellen. 4. JavaScript spielt eine Rolle bei der Back-End-Entwicklung durch Node.js und unterstützt die Entwicklung der Vollstapel.
