In JavaScript gibt es eine interessante Optimierungsfunktion, die nicht unbedingt in anderen Sprachen gilt. Betrachten Sie das folgende Code -Beispiel:
var x = 10;
var y = true;
if (x*x > 1000 || y) alert("true!");
Nach dem Login kopieren
Wie zu erwarten, wird „True“ ausgegeben, weil y wahr ist - obwohl die erste Bedingung fehlschlägt.
JavaScript -Dolmetscher analysieren jede Bedingung nacheinander. Wenn wir X auf 100 ändern, wäre x*x größer als 1000 und bewertet auf True. Da wir jedoch eine logische oder (||) verwenden, muss der Interpreter niemals analysieren - der Ausdruck muss wahr sein, sodass der Alarm angezeigt wird.
Daher können wir Ausdrücke optimieren, um sicherzustellen, dass diejenigen, die die geringste Verarbeitung benötigen, zuerst analysiert werden, d. H.
if (y || x*x > 1000) alert("true!");
Nach dem Login kopieren
Wenn y wahr ist, muss der Dolmetscher niemals den zweiten Zustand bewerten. Dies könnte eine beträchtliche Zeit sparen, insbesondere wenn wir eine Funktion aufrufen, intensive Berechnungen durchführen oder das DOM analysieren.
Die gleiche Optimierung gilt für logisch und (&&). In diesem Fall macht der erste Ausdruck, der auf False bewertet wird, die gesamte Bedingung falsch - keine weitere Verarbeitung ist erforderlich.
Zuweisungen innerhalb von Bedingungen
James Edwards hat kürzlich den Artikelauftrag in einer Bedingung geschrieben, in der er Code wie… besprach…
if (summary = document.getElementById("post-summary")) {
alert(summary.innerHTML);
}
Nach dem Login kopieren
Die Zusammenfassung
Variable wird auf das HTML-Element mit einer ID von „post-ommers“ eingestellt. Wenn das Element existiert, bewertet die Bedingung auf True und der Alarm erscheint. Wenn ein Element nicht gefunden werden kann, bewertet die Bedingung auf False und keiner der bedingten Code wird ausgeführt.
Es ist eine nützliche Technik, obwohl nach den Kommentaren nur wenige Entwickler die Praxis mochten, weil JavaScript schwieriger zu lesen und zu debuggen wird.
Es gibt jedoch ein weiteres Problem - unter 2 oder mehr Bedingungen kann Ihre Aufgabe niemals ausgeführt werden. Zum Beispiel:
if (x || y = functionY()) {
alert(y);
}
Nach dem Login kopieren
Wenn X an True bewertet wird, weist der Interpreter y niemals einen Wert zu und der Alarm wird immer einen Fehler werfen.
Wir könnten es beheben, indem wir die Bedingungen umkehren, damit y immer bewertet wird, z.
if (y = functionY() || x) …
Nach dem Login kopieren
Selbst dann könnte es immer noch Verwirrung verursachen, da es nicht offensichtlich ist, dass die Reihenfolge dieser Bedingungen unerlässlich ist. Ein Entwickler, der die obere Hälfte dieses Artikels gelesen hat, könnte sogar versuchen, den Code zu optimieren, indem er X zuerst bewertet!
Zusammenfassend lässt sich sagen, dass, wenn Sie Aufträge innerhalb von Bedingungen verwenden möchten, aber seien Sie absolut sicher, dass dies der einzige Zustand ist, den Sie jemals brauchen werden!
häufig gestellte Fragen zu schnelleren JavaScript -Zustandsausdrücken
Was ist ein javaScript -bedingter Ausdruck? Es ist eine Kurzform, eine IF-ELSE-Erklärung zu schreiben. Es ist wie folgt strukturiert: Zustand? value_if_true: value_if_false. Der Zustand wird zuerst bewertet. Wenn es wahr ist, gibt der Ausdruck die value_if_true zurück. Wenn es falsch ist, gibt es die value_if_false zurück.
Wie bewertet JavaScript logische und (&&) und oder (||) Operatoren? Für den und den Bediener bewertet JavaScript, wenn der erste Operand falsch ist, den zweiten Operanden nicht und gibt den ersten Operanden zurück. Für den OR -Operator bewertet JavaScript, wenn der erste Operand wahr ist, den zweiten Operand nicht und gibt den ersten Operand zurück.
Wie kann ich JavaScript -Bedingungen verwenden, um Werte zu vergleichen? als), = (größer als oder gleich) und if (Bedingung) {
// Code, der ausgeführt werden soll, wenn die Bedingung wahr ist JavaScript? Wenn beispielsweise eine Bedingung wahr ist, wird die Bedingung falsch zurückgegeben und umgekehrt.
Kann ich ternäre Operatoren für mehrere Bedingungen in JavaScript verwenden? Es ist jedoch wichtig zu beachten, dass verschachtelte ternäre Operatoren Ihren Code schwieriger zu lesen und zu verstehen können. Sie sollten daher sparsam verwendet werden. Dies ist eine effizientere Möglichkeit, mehrere sonstige, wenn Bedingungen zu schreiben. Die Syntax lautet wie folgt:
Switch (Ausdruck) {
Fall X:
// Code Block
break; Wenn es eine Übereinstimmung gibt, wird der entsprechende Codeblock ausgeführt.
Was ist der Unterschied zwischen Null und Undefiniert in JavaScript? Es ist ein absichtliches Fehlen eines Objektwerts. Andererseits wurde undefined bedeutet, dass eine Variable deklariert wurde, aber noch nicht zugewiesen wurde. Wenn die Variable nicht definiert ist, gibt typeof „undefiniert“ zurück. Hier ist ein Beispiel:
if (typeof myvar!
Das obige ist der detaillierte Inhalt vonWie man schnellere JavaScript -Zustandsausdrücke schreibt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!