Die bedingte Auswertung in JavaScript (Die bedingte Auswertung in JavaScript), Lektion, Seite 722804
https://www.purl.org/stefan_ram/pub/bedingte_auswertung_javascript (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
JavaScript-Kurs

Die logische Und-Verknüpfung in JavaScript 

Einführendes Beispiel

Die logische Und-Verknüpfung wertet die linke Seite  aus und ergibt deren Wert, falls er falschartig ist.

Auswertung
0 && 'def'
0

Ansonsten wertet sie die rechte Seite  aus und ergibt den Wert der rechten Seite.

Auswertung
'abc' && 14
14

Bezeichnung

Diese Und-Verknüpfung wird als „logische Und-Verknüpfung“ bezeichnet.

Sprechweisen

Der Operator »&&« wird als „und“ gesprochen, wenn es dabei verständlich wird, daß die logische  Und-Verknüpfung gemeint ist und nicht eine Summe oder eine andere Art einer Und-Verknüpfung. Ansonsten muß eine ausführlichere Sprechweise wie „der logische Und-Operator“ verwendet werden.

Schreibweisen

JavaScript
&&

In der Mathematik (Logik) und in der deutschen Sprache gibt es keine genaue Entsprechung dieser „logischen“ Und-Verknüpfung.

Morphologie

Der Operator »&&« besteht aus einer Folge zweier kommerzieller Und-Zeichen »&«. Er stellt eine lexikalische Einheit dar, die nie von Leerraum umgeben sei muß und keinen Leerraum enthalten darf.

Syntax

Der Operator »&&« ist ein binärer Infix-Operator.

Priorität

Die Priorität dieses Operators ist etwas kleiner als die von Gleichheitsprüfungen.

Eigenschaften von Operatoren

A P A (A = Aritaet, P = Position, A = Assoziativitaet)
[Zirkumfix, Praefix, pOstfix, Infix, Sonstige]

() 1 Z Eingeklammerter Ausdruck
() S Aufruf
+ - ! typeof delete 1 P Unaere vorangestellte Operatoren (Vorzeichen)
* / 2 I L "Punktrechnung": Multiplikation, Division
+ - 2 I L "Strichrechnung": Addition, Subtraktion
< 2 I L Kleiner
== != === !== 2 I L gleichartig, ungleichartig, gleich, ungleich
&& 2 I L logische Und-Verknuepfung
?: 3 I R bedingte Auswertung
= ()=> 2 I R Zuweisung, Klammerpfeil

Assoziativitätsrichtung

Dieser Operator ist linksassoziativ.

Semantik

Die Semantik wurde schon weiter oben unter „Einführendes Beispiel“ beschrieben.

Einfache Beispiele

Die folgenden Beispiele werten nur die linke Seite aus, da sie falschartig ist. Sie haben dann den Wert der linken Seite.

Auswertung
undefined && 7
undefined
Auswertung
NaN && false
NaN
Auswertung
'' && 'abc'
""
Auswertung
false && true
false
Auswertung
false && false
false
Auswertung
false && console.log( "log" )
false

Die folgenden Beispiele werten erst die linke Seite und dann die rechte Seite aus, da die linke Seite nicht  falschartig ist. Sie haben dann den Wert der rechten Seite.

Auswertung
7.2 && 22
22
Auswertung
true && 'abc'
"abc"
Auswertung
true && false
false
Auswertung
true && true
true
Auswertung
true && console.log( "log" )

log

undefined

Weitere Beispiele

Und-Kaskaden (Und-Sequenz)

Eine Kaskade von Und-Ausdrücken ergibt den ersten Wert, der falschartig  ist, oder den letzten Wert, falls keiner falschartig ist.

Die Kaskade bedeutet dasselbe wie der darunterstehende Ausdruck mit Klammern. (Die Und-Verknüpfung ist linksassoziativ.)

Auswertungen
false && 0 && 7
false
( false && 0 )&& 7
false
false && 0
false
( false )&& 7
false
Auswertungen
true && 0 && 7
0
( true && 0 )&& 7
0
true && 0
0
( true )&& 7
7
Auswertungen
true && 1 && 7
7
( true && 1 )&& 7
0
true && 1
1
( 1 )&& 7
0

Wirkungen

Die Definition von Funktionen durch den Programmierer erlaubt es, Auswertung von Ausdrücken zu verfolgen.

Auswertungen

p = x =>{ console.log( i, x ); i = i + 1; return x; }

i = 0
p( true )&& p( false )

0 true

1 false

false

i = 0
p( false )&& p( true )

0 false

false

i = 0
p( true )&& p( true )&& p( true )&& p( false )&& p( false )&& p( false )

0 true

1 true

2 true

3 false

false

Anwendungsbeispiele

Wächter

Die linke Seite kann als „Wächter“ fungieren, der die Ausführung der rechten Seite nur dann gestattet, wenn er wahrartig ist.

Dies ähnelt einem ternären Operator, aber der alternative Zweig (für den Fall, daß der ersten Ausdruck falschartig ist) entfällt hier (wie ein einer if-Anweisung).

Auswertungen

p = x =>{ console.log( i, x ); i = i + 1; return x; }

i = 0
false && p( 'ausgefuehrt' )

false

i = 0
true && p( 'ausgefuehrt' )

0 ausgefuehrt

"ausgefuehrt"

Erfolgssequenz

Unter einem „Versuch“ verstehen wir hier eine Funktion, die versucht, eine Aufgabe zu erledigen, und einen wahrartigen Wert genau dann zurückgibt, wenn der Versuch erfolgreich war.

Wenn mehrere Versuche hintereinander unternommen werden sollen, und eine Fortsetzung nur dann sinnvoll ist, wenn alle bisherigen Versuche erfolgreich waren, dann kann es durch eine Und-Sequenz erreicht werden, daß die Versuchsfolge abgebrochen wird, wenn zum ersten Mal ein Versuch scheitert.

Beispiel
DateiHolen() && 
DateiAnalysieren() &&
ErgebnisDrucken()

Das Analysieren soll nur erfolgen werden, wenn das Holen erfolgreich war, und das Drucken nur, wenn das Analysieren erfolgreich war.

Zusammengesetzte Aussagen

Eine Und-Verknüpfung kann verwendet werden, um eine Konjunktion (eine Und-Aussage) zu schreiben.

Auswertungen
schulnote =( x )=>{ return 0 < x && x < 7; }
function schulnote()
schulnote( -1 )
false
schulnote( 0 )
false
schulnote( 1 )
true
schulnote( 2 )
true
schulnote( 5 )
true
schulnote( 6 )
true
schulnote( 7 )
false
schulnote( 8 )
false

Vermeiden einer Division durch 0

Mit der Und-Verknüpfung kann eine Funktion geschrieben werden, die den Kehrwert einer Zahl oder »false« zurückgibt. »false« wird zurückgegeben, wenn die Zahl gleich »0« ist, weil dann eine Berechnung des Kehrwerts nicht möglich ist.

Auswertungen

kehrwert_oder_false =( x )=>{ return x != 0 && 1/x; }

kehrwert_oder_false( 2 )

0.5
kehrwert_oder_false( 0 )
false

Eine alternative Implementation mit dem ternären Operator:

Auswertungen
kehrwert_oder_false =( x )=>{ return x != 0 ? 1/x : false; }

Absicherung eines Eintragsausdrucks

Bei der Absicherung eines Eintragsausdrucks wird vor der Auswertung sichergestellt, daß der als Verzeichnis verwendete Ausdruck nicht »null« oder »undefined« ist.

Auswertungen
if( style && style.fontSize )el.style.fontSize = "2em"

Erkennung des ECMAScript -Typs „Objekt“

Die folgende Funktion erkennt den ECMAScript -Typ „Objekt“. (In ECMAScript  ist der Typ von »null« nicht »object«, sondern „Null “).

ECMAScript-Objekt-Erkenner
x => typeof x === 'object' && x !== null

Seiteninformationen und Impressum   |   Mitteilungsformular  |   "ram@zedat.fu-berlin.de" (ohne die Anführungszeichen) ist die Netzpostadresse von Stefan Ram.   |   Eine Verbindung zur Stefan-Ram-Startseite befindet sich oben auf dieser Seite hinter dem Text "Stefan Ram".)  |   Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram. Schlüsselwörter zu dieser Seite/relevant keywords describing this page: Stefan Ram Berlin slrprd slrprd stefanramberlin spellched stefanram722804 stefan_ram:722804 Die bedingte Auswertung in JavaScript Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd722804, slrprddef722804, PbclevtugFgrsnaEnz Erklärung, Beschreibung, Info, Information, Hinweis,

Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram.
https://www.purl.org/stefan_ram/pub/bedingte_auswertung_javascript