Muchas veces, tanto en JavaScript como en otros lenguajes de Programmierung necesitamos realizar diferentes acciones basadas en una condición.
Es gibt eine if-Anweisung dafür und auch den bedingten (ternären) Operator zur Bewertung der Bedingung, den wir als "Fragezeichen" -Operator bezeichnen werden. ? Der Einfachheit halber.
Die "if" -Anweisung
Die if-Anweisung erhält eine Bedingung, wertet sie aus und gibt an, ob das Ergebnis vorliegt wahr (true), führen Sie den Code aus, und wenn nicht, nein.
Zum Beispiel:
// In welchem Jahr wurde die ECMAScript-2015-Spezifikation veröffentlicht? ' // Antwort: 2015 sei Jahr = 2015; if (year == 2015) alert ('Es wurde im Jahr 2015 veröffentlicht');
Im obigen Beispiel ist die Bedingung eine einfache Gleichheitsprüfung: Jahre == 2015, aber es kann viel komplexer sein.
Wenn mehr als eine Anweisung ausgeführt werden muss, müssen wir unseren Codeblock in geschweifte Klammern setzen:
if (Jahre == 2015) {alert ("Sie haben Recht!"); alert ("Du bist extrem schlau!"); }}
Es wird empfohlen, den Codeblock zu umbrechen wenn mit Schlüsseln {} jedes Mal, auch wenn es nur eine Aussage gibt. Das verbessert die Lesbarkeit.
Umwandlung booleana
Die if-Anweisung (…) wertet den Ausdruck in Klammern aus und konvertiert ihn in den Booleschen Typ.
- Eine Zahl 0, eine leere Zeichenfolge »«, null, undefiniert und NaN wird in konvertiert falsch. Deshalb werden sie "falsche" Werte genannt.
- Andere Werte werden wahr, so werden sie "Wahrheit" genannt.
Der Code unter dieser Bedingung würde also niemals ausgeführt werden:
if (0) {// 0 ist falsch ...} ... Und innerhalb dieser Bedingung funktioniert es immer: if (1) {// 1 ist wahr ...}
Wir können auch einen vorab bewerteten Booleschen Wert an übergeben wenn, wie hier:
let cond = (Jahre == 2015); // Gleichheit wird als wahr oder falsch ausgewertet, wenn (cond) {...}
Die "else" -Klausel
Die Erklärung wenn kann einen Block enthalten Sonst Optional. Es wird ausgeführt, wenn die Bedingung falsch ist.
Zum Beispiel:
lass Alter = 16; if (Alter> = 18) {alert ('Sie sind bereits volljährig'); } else {alert ('du bist minderjährig'); // Da das Alter gleich 16 ist, wird der if-Block vollständig übersprungen und springt sofort zum else}
Verschiedene Bedingungen: "ja nein"
Manchmal möchten wir mehrere Varianten einer Bedingung testen. Es gibt eine Klausel sonst wenn Dafür.
Zum Beispiel:
let year = prompt ('In welchem Jahr wurde die ECMAScript-2015-Spezifikation veröffentlicht?', ''); if (Jahr <2015) {alert ('Zu früh ...'); } else if (Jahr> 2015) {alert ('Zu spät'); } else {alert ('Genau!'); }}
Im obigen Code prüft JavaScript zuerst Jahr <2015. Wenn es falsch ist, geht es zur nächsten Bedingung Jahr> 2015 und ansonsten wird der letzte Alarm angezeigt.
Es kann noch mehr geben, wenn Blöcke. Das Ende else ist optional.
Ternärer Operator '?'
Manchmal müssen wir abhängig von einer Bedingung eine Variable zuweisen.
Zum Beispiel:
let AccessAllowed; let age = prompt ('Wie alt bist du?', ''); if (Alter> 18) {AllowedAccess = true; } else {AllowedAccess = false; } alert (AccessAllowed);
Der Operator "ternär" oder "Fragezeichen" ermöglicht es uns, dies auf kürzere und einfachere Weise zu tun.
Der Bediener wird durch ein Fragezeichen dargestellt ?. Der formale Begriff "ternär" bedeutet, dass der Operator drei Operanden hat. Tatsächlich ist es der einzige Operator in JavaScript, der so viele hat.
Die Syntax lautet:
Ergebnis = Bedingung lassen? Wert1: Wert2
Wird ausgewertet Bedingung, wenn es wahr ist, dann Wert1 wird zurückgegeben, sonst - value2.
Zum Beispiel:
let AllowedAccess = (Alter> 18)? wahr falsch;
Technisch können wir Klammern weglassen Alter> 18. Der Fragezeichenoperator hat eine niedrige Priorität. Läuft nach dem Vergleich >, also werden wir das gleiche tun:
// Der Vergleichsoperator "age> 18" wird ohnehin zuerst ausgeführt // (keine Notwendigkeit, ihn in Klammern zu setzen) let AllowedAccess = age> 18? wahr falsch;
Pero los paréntesis hacen que el código Sein más legible, por lo que se recomienda usarlos.
Merken Sie sich:
Im obigen Beispiel ist es möglich, dem Fragezeichenoperator auszuweichen, da der Vergleich selbst true / false zurückgibt:
// das gleiche let AllowedAccess = age> 18;
Mehrfach '?'
Eine Folge von Fragezeichenoperatoren? Ermöglicht die Rückgabe eines Werts, der von mehr als einer Bedingung abhängt.
Zum Beispiel:
let age = prompt ('age?', 18); Nachricht lassen = (Alter <3)? "Hi chic @!" : (Alter <18)? 'Hallo!' : (Alter <100)? 'Schöne Grüße !' : 'Was für ein ungewöhnliches Alter! '; Warnmeldung);
Es kann zunächst schwierig sein zu verstehen, was los ist. Nach einer detaillierteren Analyse können wir jedoch feststellen, dass es sich nur um eine gewöhnliche Abfolge von Tests handelt.
Das erste Fragezeichen prüft, ob Alter <3.
Wenn true, wird "Hello, chic @!" Zurückgegeben. Andernfalls wird der Doppelpunkt ":" verwendet und das Alter <18 gesucht.
Wenn dies zutrifft, wird "Hallo!" Zurückgegeben. Andernfalls wird der Doppelpunkt ":" verwendet und das Alter <100 überprüft.
Wenn das stimmt, gibt es 'Grüße!' Zurück, andernfalls folgt es dem letzten Doppelpunkt ':' und gibt 'Was für ein ungewöhnliches Alter!' Zurück.
Hier zeige ich Ihnen die gleiche Logik mit if..else:
if (Alter <3) {message = 'Hallo, schickes @!'; } else if (Alter <18) {message = 'Hallo!'; } else if (Alter <100) {message = 'Grüße!'; } else {message = 'Was für ein ungewöhnliches Alter!'; }}
Nicht-traditionelle Verwendung von '?'
Manchmal das Fragezeichen? wird als Ersatz verwendet für:
let company = prompt ('Welche Firma hat JavaScript erstellt?', ''); (Firma == 'Netscape')? alert ('Richtig!'): alert ('Falsch.');
Abhängig von der Bedingung Firma == 'Netscape', der erste oder der zweite zurück? Sie werden ausgeführt und zeigen die Warnung an.
Wir weisen einer Variablen hier kein Ergebnis zu. Die Idee ist, je nach Bedingung unterschiedlichen Code auszuführen.
Die Verwendung des Fragezeichenoperators auf diese Weise wird nicht empfohlen.
Die Notation scheint kürzer zu sein als wenn, was einige Programmierer anspricht. Aber es ist weniger lesbar.
Hier ist der gleiche wenn Code zum Vergleich:
let company = prompt ('Welche Firma hat JavaScript erstellt?', ''); if (company == 'Netscape') {alert ('Richtig!'); } else {alert ('Falsch.'); }}
Unsere Augen scannen den Code vertikal. Konstrukte, die mehrere Zeilen umfassen, sind leichter zu verstehen als ein langer horizontaler Befehlssatz.
Die Idee eines Fragezeichens? ist es, den einen oder anderen Wert abhängig von der Bedingung zurückzugeben. Bitte benutzen Sie es genau dafür.