Die bedingte Auswertung in JavaScript
Die Syntax der bedingten Auswertung
- Bedingte Auswertung
Anweisung
.--. .-. .----------. .-. .-----------.
--->( if )--->( ( )--->| Ausdruck |--->( ) )--->| Anweisung |--->
'--' '-' '----------' '-' '-----------'
Die Semantik der bedingten Auswertung
Zunächst wird der Ausdruck ausgewertet.
Falls der Wert des Ausdrucks als wahr gilt, so wird die Anweisung ausgewertet, und der Wert der gesamten if-Anweisung ist dann der Wert jener Anweisung (oder »undefined«, falls die Anweisung keinen Wert produzierte).
Falls der Wert des Ausdrucks als falsch gilt, so ist das Ergebnis der if-Anweisung »undefined«.
Die Anweisung wird also nur unter einer bestimten Bedingung ausgewertet, sie wird bedingt ausgewertet. Daher ergibt sich die Bezeichnung bedingte Auswertung für die hier vorgestellt Form der if-Anweisung.
Entsprechend der Bedeutung können wir auch die Bezeichnungen wie in dem folgenden Diagramm wählen.
- Bedingte Auswertung
Anweisung
.--. .-. .-----------. .-. .------------.
--->( if )--->( ( )--->| Bedingung |--->( ) )--->| Konsequenz |--->
'--' '-' '-----------' '-' '------------'- Beispiel einer if-Anweisung
if( 0 )1;
- mögliche (nicht ganz) deutschsprachige Formulierung des Beispiels
- Wenn 0, dann 1.
Beispiele der bedingten Auswertung
- Auswertung
if( console.log( "a" ))0;
a
undefined
- Auswertung
if( 0 )1;
undefined
- Auswertung
if( 1 )2;
2
- Auswertung
if( 0 )console.log( 1 ); console.log( 2 );
2
undefined
- Auswertung
if( 1 )console.log( 2 ); console.log( 3 );
2
3
undefined
- Auswertung
if( 0 ){ console.log( 1 ); console.log( 2 ); }
undefined
- Auswertung
if( 1 ){ console.log( 2 ); console.log( 3 ); }
2
3
undefined
Vergleich mit dem ternären Ausdruck
Man kann sagen, daß die folgende bedingte Auswertung (mit einem Ausdruck »E « und einer Anweisung »S «) in vielen Fällen dem darunterstehenden ternären Ausdruck entspricht.
- if-Anweisung
- { if( E )S }
- ternärer Ausdruck in geschweiften Klammern
- { E ? eval( "S " ): undefined; }
Es gibt unter andere folgende Unterschiede zwischen dem ternären Ausdruck und der bedingten Auswertung:
- Beim ternären Ausdruck ist die Konsequenz ein Ausdruck, bei der bedingten Auswertung eine Anweisung.
- Bei der bedingten Auswertung wird keine Alternative angegeben.
Übungsfragen
? Übungsfrage
Welche Ausgaben erzeugt die folgende Sequenz?
- Sequenz
if( 2 - 2 )console.log( "a" ); console.log( "b" );
? Übungsfrage
Welche Ausgaben erzeugt die folgende Sequenz?
- Sequenz
if( 2 - 3 )console.log( "a" ); console.log( "b" );
? Übungsfrage
Welche Ausgaben erzeugt die folgende Sequenz?
- Sequenz
if( "2 - 2" ){ console.log( "a" ); console.log( "b" ); }
? Übungsfrage
Welche Ausgaben erzeugt die folgende Sequenz?
- Sequenz
if( eval( "2 - 2" )){ console.log( "a" ); console.log( "b" ); }
? Übungsfrage
Welche Ausgaben erzeugt die folgende Sequenz?
- Sequenz
let x = 0; if( x = 2 ){ console.log( "a" ); console.log( "b" ); }
Übungsaufgaben
/ Schreiben einer if-Anweisung
Schreiben Sie eine if-Anweisung mit der Bedingung »x« und der Konsequenz »f();«.
- Bedingte Auswertung
Anweisung
.--. .-. .-----------. .-. .------------.
--->( if )--->( ( )--->| Bedingung |--->( ) )--->| Konsequenz |--->
'--' '-' '-----------' '-' '------------'
/ Übersetzung
Übersetzen Sie die (nicht ganz) deutschsprachige Formulierung „Wenn n, dann Ausgabe von 22 “ in eine if-Anweisung.
- Beispiel einer if-Anweisung
if( 0 )1;
- mögliche (nicht ganz) deutschsprachige Formulierung des Beispiels
- Wenn 0, dann 1.