Dieser Artikel stellt Ihnen hauptsächlich die Unterschiede und Zusammenhänge zwischen if und switch, == und === in JavaScript vor. Er ist sehr detailliert und praktisch
Schauen Sie sich zunächst einen Beispielcode an:
var a = '5'; switch (a) { case 5: console.log('=='); break; case "5": console.log('==='); break; default: }
Die letzte Konsole zeigt ===, was sicher zu verwenden scheint.
1.if und switch
if werden am häufigsten verwendet, dazu gibt es nicht viel zu sagen. Eine erwähnenswerte Sache ist: if ist tatsächlich sehr ähnlich zu ||. Wenn „conditionA“ in „if (conditionA){} else {}“ wahr ist, wird der Code in „else“ nicht einmal betrachtet, nachdem der Codeblock vor „else“ ausgeführt wurde. Genauso wie wenn || vorne wahr ist, wird es später ignoriert, auch wenn es viele Fehler enthält. Basierend auf dieser Eigenschaft werden natürlich die Codeblöcke, die möglicherweise am häufigsten verwendet werden, vorangestellt, um die Anzahl der Urteile zu reduzieren. Wenn es andererseits viele Urteile gibt und die Anzahl der möglichen Ausführungen relativ gleichmäßig verteilt ist, müssen nachfolgende Urteilsanweisungen jedes Mal die vorherigen Urteile einzeln ausführen, was der Optimierung nicht förderlich ist. Ein besserer Ansatz besteht darin, einstufige Urteilsaussagen in zweistufige Urteilsaussagen umzuwandeln, z. B.
if (a > 0 && a <= 1) { //do something } else if (a > 1 && a <= 2) { } else if (a > 2 && a <= 3) { } else if (a > 3 && a <= 4) { } else if (a > 4 && a <= 5) { } else if (a > 5 && a <= 6) { }...
wird zu
if (a > 0 && a <= 4) { if (a <= 1) { //do something } else if (a > 1 && a <= 2) { } else if (a > 2 && a <= 3) { } else if (a > 3 && a <= 4) { } } else if (a > 4 && a <= 8) { // }..
Obwohl jedes der vorherigen Urteile noch einmal hinzugefügt wurde, wurden die nachfolgenden Urteile um das (4-1)*n-fache reduziert, was immer noch ein voller Gewinn ist. Plötzlich habe ich das Gefühl, dass diese Methode ein wenig den verschachtelten Schleifen ähnelt. Das Platzieren der Schleifen mit einer kleinen Anzahl von Schleifen kann helfen, die Leistung zu optimieren. Die Aufteilung in zwei oder sogar mehrere Ebenen hängt von der jeweiligen Situation ab.
Switch ist sein engster Kamerad. Jedes Mal, wenn er zu beschäftigt ist, kommt er, um zu helfen. Über die gegenseitige Konvertierung zwischen switch und if gibt es wahrscheinlich nichts zu sagen, und switch führt Urteile nacheinander von oben nach unten aus. Der Unterschied besteht darin, dass das else in if nicht in switch funktioniert. brechen . Wenn keine Unterbrechung auftritt, wird der Schalter weiterhin ausgeführt, z. B.
var a = 2; switch (a) { case 1: console.log("1"); //break miss case 2: console.log("2"); case 3: console.log("3"); default: console.log('no break'); }
Schließlich zeigt die Konsole 2,3,keine Unterbrechung an. Tatsächlich ist es ziemlich einfach zu verstehen, dass break das Programm dazu auffordert, aus dem internen Ausführungskörper zu springen und mit der nächsten Fallbeurteilung fortzufahren. Wenn keine weitere vorhanden ist, entspricht dies if(condition){A}{B}. Ohne else werden natürlich sowohl A als auch B ausgeführt. Es gibt zwei weitere kleine Tipps: Zum einen können Sie jeden Ausdruck in Groß- und Kleinschreibung schreiben, z. B.
switch (A + B) { case a * b: console.log("1"); break; case a / b + c: break; //... default: console.log('no break'); }
Der eigentliche Vergleich ist (A+B)= = =(a*b) und (A+B)===(a/b+c). Zweitens hat der Wechsel eine besondere Verwendung, z. B.
switch (true) { case condition1: //do something break; case condition2: break; //... default: //.. ; }
Zu diesem Zeitpunkt wird jeder Fall im Wechsel beurteilt und der Reihe nach ausgeführt. Was switch(false) betrifft, ist es nutzlos.
2.== und ===
Der klassischste Fall
var a = "5", b = 5; a == b //true a === b //false var a = "ABC", b = "AB" + "C"; a === b //true
Folgendes Der Grund, warum true angezeigt wird, ist tatsächlich untrennbar mit der Unveränderlichkeit des String-Typs verbunden. Oberflächlich betrachtet sieht es so aus, als ob b nur eine Zeichenfolge verkettet, aber tatsächlich hat es nichts mit dem ursprünglichen b zu tun. Jede Zeichenfolge wird an einer bestimmten Stelle im Speicherpool gespeichert. Wenn b="AB"+"C" ausgeführt wird, wurden die Zeichenfolgen AB und C zerstört und b zeigt auf die Position von ABC im Speicherpool. Da die Zeichenfolge ABC vor dem Zeigen im Speicherpool gefunden wurde (da a darauf verweist, existiert sie), zeigt b auf denselben Bereich wie a und die Kongruenzbeurteilung ist gleich. Wenn vor b keine Variable vorhanden ist, die auf die Zeichenfolge ABC zeigt, gibt es keine Variable im Speicherpool und es wird ein Platz für ABC darin zugewiesen, und b zeigt auf ABC.
Das obige ist der detaillierte Inhalt vonAusführliche Erläuterung der Unterschiede und Verbindungsbeispiele zwischen if und switch, == und === in Javascript. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!