Manchmal müssen wir verschiedene Aktionen basierend auf verschiedenen Bedingungen ausführen.
Dazu können wir die if
Anweisung und den bedingten Operator ?
, der auch als „Fragezeichen“ – Operator bezeichnet wird.
Die“ if “ – Anweisung
Dieif(...)
– Anweisung wertet eine Bedingung in Klammern aus und führt, wenn das Ergebnistrue
ist, einen Codeblock aus.,
Zum Beispiel:
let year = prompt('In which year was ECMAScript-2015 specification published?', '');if (year == 2015) alert( 'You are right!' );
Im obigen Beispiel ist die Bedingung eine einfache Gleichheitsprüfung (year == 2015
), kann jedoch viel komplexer sein.,
Wenn wir mehr als eine Anweisung ausführen möchten, müssen wir unseren Codeblock in geschweifte Klammern einschließen:
if (year == 2015) { alert( "That's correct!" ); alert( "You're so smart!" );}
Wir empfehlen, Ihren Codeblock mit geschweiften Klammern {}
jedes Mal, wenn Sie eine if
Anweisung verwenden, auch wenn es gibt nur eine Anweisung auszuführen. Dies verbessert die Lesbarkeit.
Boolesche Konvertierung
Dieif (…)
– Anweisung wertet den Ausdruck in Klammern aus und konvertiert das Ergebnis in einen booleschen Wert.,
Erinnern wir uns an die Konvertierungsregeln aus dem Kapitel Typkonvertierungen:
- A number
0
, an empty string ,null
, , andNaN
all becomefalse
. Aus diesem Grund werden sie „falsche“ Werte genannt. - Andere Werte werden zu
true
, daher werden sie“truthy“ genannt.,
Also, der Code unter dieser Bedingung würde niemals ausgeführt:
if (0) { // 0 is falsy ...}
…und innerhalb dieser Bedingung – es wird immer:
if (1) { // 1 is truthy ...}
Wir können auch ein vorab ausgewerteter boolescher Wert für if
wie folgt:
let cond = (year == 2015); // equality evaluates to true or falseif (cond) { ...}
Die „else“-Klausel
Die if
– Anweisung kann einen optionalen „else“ – Block enthalten. Es wird ausgeführt, wenn die Bedingung falsch ist.,
Zum Beispiel:
Mehrere Bedingungen:“else if“
Manchmal möchten wir mehrere Varianten einer Bedingung testen. Dieelse if
Klausel lässt uns das tun.
Zum Beispiel:
Im obigen Code überprüft JavaScript zuerst year < 2015
. Wenn das falsch ist, geht es zur nächsten Bedingung year > 2015
. Wenn das auch falsch ist, zeigt es die letzte alert
.
Es können mehrelse if
Blöcke vorhanden sein. Die endgültige else
ist optional.
Bedingter Operator‘?,‘
Manchmal müssen wir abhängig von einer Bedingung eine Variable zuweisen.
Zum Beispiel:
Mit dem sogenannten“ bedingten „oder“ Fragezeichen “ – Operator können wir das kürzer und einfacher machen.
Der Operator wird durch ein Fragezeichen dargestellt ?
. Manchmal wird es „ternär“ genannt, weil der Operator drei Operanden hat. Es ist eigentlich der einzige Operator in JavaScript, der so viele hat.,
Die Syntax lautet:
let result = condition ? value1 : value2;
Die condition
wird ausgewertet: Wenn es wahr ist, wird value1
zurückgegeben, andernfalls – value2
.
Zum Beispiel:
let accessAllowed = (age > 18) ? true : false;
Technisch gesehen können wir die Klammern um age > 18
weglassen. Der Fragezeichenoperator hat eine niedrige Priorität und wird daher nach dem Vergleich >
.,
Dieses Beispiel macht dasselbe wie das vorherige:
Aber Klammern machen den Code lesbarer, daher empfehlen wir, sie zu verwenden.
Im obigen Beispiel können Sie die Verwendung des Fragezeichenoperators vermeiden, da der Vergleich selbst true/false
:
// the samelet accessAllowed = age > 18;
Multiple ‘?‘
Eine Folge von Fragezeichenoperatoren ?
kann einen Wert zurückgeben, der von mehr als einer Bedingung abhängt.,
Zum Beispiel:
let age = prompt('age?', 18);let message = (age < 3) ? 'Hi, baby!' : (age < 18) ? 'Hello!' : (age < 100) ? 'Greetings!' : 'What an unusual age!';alert( message );
Es kann zunächst schwierig sein zu verstehen, was los ist. Aber nach einem genaueren Blick können wir sehen, dass es nur eine gewöhnliche Folge von Tests ist:
So sieht das mit if..else
:
if (age < 3) { message = 'Hi, baby!';} else if (age < 18) { message = 'Hello!';} else if (age < 100) { message = 'Greetings!';} else { message = 'What an unusual age!';}
Nicht traditionelle Verwendung von ‘?,‘
Manchmal wird das Fragezeichen ?
als Ersatz für if
:
let company = prompt('Which company created JavaScript?', '');(company == 'Netscape') ? alert('Right!') : alert('Wrong.');
Je nach Zustandcompany == 'Netscape'
, entweder der erste oder der zweite Ausdruck nach dem?
wird ausgeführt und zeigt eine Warnung an.
Wir weisen einer Variablen hier kein Ergebnis zu. Stattdessen führen wir je nach Bedingung unterschiedlichen Code aus.
Es wird nicht empfohlen, den Fragezeichenoperator auf diese Weise zu verwenden.,
Die Notation ist kürzer als die äquivalenteif
– Anweisung, die einige Programmierer anspricht. Aber es ist weniger lesbar.
Hier ist der gleiche Code mit if
zum Vergleich:
let company = prompt('Which company created JavaScript?', '');if (company == 'Netscape') { alert('Right!');} else { alert('Wrong.');}
Unsere Augen scannen den Code vertikal. Codeblöcke, die sich über mehrere Zeilen erstrecken, sind leichter zu verstehen als ein langer, horizontaler Befehlssatz.,
Der Zweck des Fragezeichenoperators ?
besteht darin, je nach Zustand den einen oder anderen Wert zurückzugeben. Bitte verwenden Sie es für genau das. Verwenden Sie if
, wenn Sie verschiedene Codezweige ausführen müssen.
Leave a Reply