Ich sehe oft viele abgekürzte bedingte Expressionsaussagen in den Codes großer Menschen überall. Nachdem ich einige Artikel gelesen habe, die diesen Aspekt vorgestellt haben, denke ich, dass 3 Wege 2 besagt, ob dieser Artikel (http://www.thomasfrank.se/3_ways_2_say_if.html) nicht schlecht ist. In diesem Artikel fasste der Autor die Merkmale und Verwendungen der traditionellen Ausdrücke von if ... else ..., ?:, &&/|| zusammen und fasste sie wie folgt zusammen:
1. Wenn ... sonst Struktur
// R auf 0 oder 1 var r = math.floor (2*math.random ()) // Setzen Sie A, B und C auf "klein", wenn r == 0 und sie auf "Big" // drei verschiedene Techniken einstellen // Methode 1: Wenn sonst var A; if (r == 0) {a = "klein"} else {a = "big"}; // Methode 2: Bedingter Operator var b = r == 0? "klein": "groß"; // Methode 3: und/oder Operatoren var c = r == 0 && "klein" || "groß"; // Überprüfen Sie die Werte unserer Variablen -Warnung (r+""+a+""+b+""+c);2. wenn ... sonst ... sonst Struktur
// R auf 0,1,2 oder 3 var r = math.floor (4*math.random ()) // Set a, b und c auf "nada", "klein", "groß" und "riesig" // abhängig vom Wert oder R mit drei verschiedenen Techniken // Methode 1: wenn .. wenn ... sonst ... var a; if (r == 0) {a = "nada"} else if (r == 1) {a = "klein"} else if (r == 2) {a = "big"} else {a = "riesiger"}; // Methode 2: Bedingte Operatoren var b = r == 0? "nada": r == 1? "klein": r == 2? "groß": "riesig"; // Methode 3: und/oder Operatoren var c = r == 0 && "nada" || r == 1 && "klein" || r == 2 && "groß" || "riesig"; // Überprüfen Sie die Werte unserer Variablen -Warnung (r+""+a+""+b+""+c);3. Führen Sie die Funktion aus
// R auf 0,1,2 oder 3 var r = math.floor (4*math.random ()) // Die globale Variable X und unsere vier Funktionen var x = "" setzen; nada = function () {x+= "nada!"}; small = function () {x+= "small!"}; Big = function () {x+= "Big!"}; riesig = function () {x+= "riesige!"}; // Rufen Sie eine bestimmte Funktion auf, abhängig vom Wert von r // drei verschiedene Techniken // Methode 1: if .. else wenn ... sonst ... sonst wenn (r == 0) {nada ()} else if (r == 1) {small ()} else if (r == 2) {big ()} sonst {riesig ()}; // Methode 2: Bedingte Operatoren R == 0? nada (): r == 1? small (): r == 2? Big (): riesig (); // Methode 3: und/oder Operatoren r == 0 && (nada () || true) // nada () Die Funktion gibt nicht unbedingt True zurück. Um diese nachfolgende Logik oder || sicherzustellen, Urteile werden nicht ausgeführt, ein wahrer Wert muss zurückgegeben werden, das gleiche unten || r == 1 && (small () || true) || r == 2 && (big () || true) || riesig(); // Überprüfen Sie die Werte unserer Variablen -Warnung (r+""+x);4. Führen Sie den Code aus
// R auf 0,1,2 oder 3 var r = math.floor (4*math.random ()) // Die globale Variable x var x = "" einstellen; // Ausführen von unterschiedlichem Code abhängig vom Wert von r // drei verschiedene Techniken // Methode 1: if .. sonst ... sonst wenn ... wenn (r == 0) {x+= "nada!"} Else if (r == 1) {x+= "klein!"} Else if (r == 2) {x+= "Big!" {X+=}! " // Methode 2: Bedingte Operatoren R == 0? function () {x+= "nada!"} (): r == 1? function () {x+= "small!"} (): r == 2? function () {x+= "big!"} (): function () {x+= "riesige!"} (); // Methode 3: und/oder Operatoren r == 0 && (function () {x+= "nada!"} () || true) // Jemand wies in dem Kommentar darauf hin, dass die anonymen Funktionen hier nicht erforderlich sind, und dies ist der Fall, wenn nur ein ausführbarer Code, aber wenn es mehrere Code gibt, die ausgeführt werden müssen. r == 1 && (function () {x+= "small!"} () || true) || r == 2 && (function () {x+= "big!"} () || true) || function () {x+= "riesig!"} (); // Überprüfen Sie die Werte unserer Variablen -Warnung (r+""+x);In diesem Online -Artikel liegt der Fokus des Autors auf der Kürze des Codes. Im Allgemeinen bevorzugt der Autor es vor, den Betreiber zu verwenden, und ist der Meinung, dass die && und || Methoden müssen ein paar weitere Buchstaben eingeben, wodurch es umständlicher wirkt. Bei der Ausführung von Funktionen ist es bequemer, herkömmlich zu verwenden, wenn ... sonst. In seinen Kommentaren schlugen einige Leute vor, dass der Client -Seitencode einfacher und kürzer effektiver ist, als einige unauffällige laufende Effizienz zu verbessern, was auch in einigen Programmen korrekt ist. Daher kann es wichtiger sein, eine prägnantere Form zu wählen, um bedingte Aussagen aus formaler Perspektive zu verarbeiten als die Betriebseffizienz dieser Aussagen selbst, ganz zu schweigen davon, dass die Betriebseffizienz von UA zu UA variiert.
In dem Urteil, dass es nur zwei Bedingungen gibt, die wenn ... sonst oder?: Sind beide ziemlich einfach, während die Betriebsmethoden von && und || sind ein wenig kompliziert. Solange Sie die folgenden zwei Grundprinzipien verstehen, werden alle Probleme gelöst:
Erstens, wenn Sie die Logik und && und logisch verwenden oder || Operatoren, die Richtung von links nach rechts. Der && stoppt, wenn der erste Wert falsch ist (oder Wert, der in False konvertiert werden kann, wie z. B. null/undefiniert/0/""/nan usw.) und stoppt, wenn der erste Wert der erste Wert ist (oder Wert, der in true konvertiert werden kann); Der Wert, der durch die gesamte Bedingung zurückgegeben wird, ist der Wert der zuletzt erkannten Bedingung, nicht unbedingt nur wahr/falsch.
Zweitens hat die Logik eine höhere Priorität als der && Operator als der logische oder operator.
Nach dem ersten Prinzip werden r == 0 und "klein" von links nach rechts berechnet. Wenn r == 0 wahr ist, wird "klein" erkannt. "klein" ist eine nicht leere Saite, also wird C als "klein" angesehen. Wenn r == 0 falsch ist, die zweite Bedingung "Big" Erkennung von Logik oder || wird direkt gestartet. Aus dem gleichen Grund sollte C als "groß" angesehen werden. Nach dem zweiten Prinzip müssen während des Betriebs von Variablen C im obigen Code keine Klammern hinzugefügt werden.
Seit verwendet das?: Und &&, || Die Betreiber können eine Rolle bei der Vereinfachung des Code in einem bestimmten Programm spielen. Dies ist im Bibliotheksquellcode wie JQuery sehr wichtig. Zusammenfassend hat dieser Betreibertyp zwei Hauptanwendungen: Eine besteht darin, Werte zuzuweisen oder zurückzugeben, und der andere besteht darin, Code auszuführen (vorerst klassifizieren Sie ihn).
Die Verwendungen für die Zuordnung sind überall in JQuery oder anderen Bibliotheken. Eine klassische Anwendung soll die Funktion der Standardwerte für Schnittstellen implementieren. Wir können einen solchen Code problemlos schreiben, z. B.:
var myobj = function (option) {var color = options.Color || this.Defaults.defaults; var HintergrundColor = Optionen.BackgroundColor || this.defaults.backgroundColor;};myObj.prototype.defaults = { color : "#393939", backgroundColor : "#222"}var myIns = new myObj({ color : "#80FF80"});console.log("color:"+myIns.color+", backgroundColor: "+myIns.backgroundColor);Unabhängig davon, ob es funktioniert?
(xmlhttprequest.readyState == 4 && xmlhttprequest.status == 200)? Alert ("Erfolg!"): Alert ("Misserfolg!");Wenn also mehrere Codes ausgeführt werden müssen, sollten anonyme Funktionen verwendet werden. wie:
(xmlhttprequest.readyState == 4 && xmlhttprequest.status == 200)? function () {alert ("Erfolg!"); var a = 100; Alert (a);}: alert ("Fehler!");Es gibt zu viele Abkürzungen in JQuery 1.7.1 Quellcode wie Zeile 2643:
// Haken für boolean Attributesboolhook = {get: function (elem, name) {// boolean -Attribute mit entsprechenden Eigenschaften ausrichten // zurück in die Attributpräsenz zurückfallen, bei der einige Booleschen nicht unterstützt werden var attrnode, property = jQuery.prop (Elem, Name); Rückgabeeigenschaft === true || typeof Eigenschaft! name.tolowerCase (): undefiniert; }, set: function () {...}}Es scheint, dass wir weiter lernen und zusammenfassen müssen.
Der obige JavaScript -Abkürzung bedingte Satz (empfohlen) ist der gesamte Inhalt, den ich mit Ihnen teile. Ich hoffe, Sie können Ihnen eine Referenz geben und ich hoffe, Sie können wulin.com mehr unterstützen.