Umgebungen in JavaScript
Bestimmte Auswertungen können Wirkungen haben, die noch nach dem Ende der Auswertung beobachtbar sind.
- Auswertung
a = 2
2
Die folgende Auswertung wird durch die voranstehende Auswertung beeinflußt. (Ohne diese würde sie nicht notwendigerweise »2« ergeben.)
- Auswertung
a
2
Wir können den die Auswertung der Zuweisung mit einem anderen Wert wiederholen.
- Auswertung
a = 3
3
Wir erhalten eben jenen anderen Wert dann auch später bei einer Verwendung des Namens.
- Auswertung
a
3
Die Auswertung mancher Ausdrücke, wie »a = 2« hat eine Wirkung. Solche Auswertungen nennen wir auch Wirkauswertungen. Entsprechend versehen wir auch alles andere, das eine Wirkung hat mit dem Präfixoid „Wirk-“:
- Ein Wirkausdruck ist ein Ausdruck, dessen Auswertung eine Wirkung hat.
- Eine Wirkfunktion ist eine Funktion, deren Aufruf eine Wirkung hat.
- Ein Wirkoperator ist ein Operator, dessen Anwendung eine Wirkung hat (wie der Operator »=« oben).
- u. s. w.
Der bloße Wert einer Auswertung gilt nicht als eine Wirkung.
- Merkformel
- Wert ≠ Wirkung
Aber man faßt Wert und Wirkung einer Auswertung zum Verhalten jener Auswertung zusammen.
- Merkformel
- Verhalten = Wert + Wirkung
Das Verhalten mancher Auswertungen, wie einer Auswertung des Ausdrucks »a« (siehe oben), kann durch den Zustand der Umgebung (Welt) zum Zeitpunkt der Auswertung beeinflußt werden. Dies stellt sozusagen das Gegenstück zu einer Wirkung dar, das wir auch als eine Messung oder eine Leseoperation bezeichnen.
- Zusammenspiel zwischen Umgebung (Welt) und Auswertung
.----------------------. .----------------------.
| Auswertung | | Umgebung |
| | Wirkung | |
| |----------------------------->| |
| | zB "a = 2" | |
| | | |
| | | |
| | Auslesen | |
| |<-----------------------------| |
| | zB "a" | |
| | | |
'----------------------' '----------------------'
Auswertungen können die Welt verändern (Wirkung) oder vom Zustand der Welt beeinflußt werden (Messung/Leseoperation).
Auswertungen ignorierter Argumente
Eine Funktion, die genau ein Argument akzeptiert, kann auch mit zwei Argumenten aufgerufen werden.
- Auswertung
Math.floor.length
1
- Auswertung
Math.floor( 7, 9 )
7
Anhand der Wirkung der Auswertung kann man erkennen, daß dabei der Wert der weiteren Argumente zwar nicht verwendet wird, diese aber doch ausgewertet werden.
- Auswertung
Math.floor( 7, e = 9 )
7
- Auswertung
e
9
Reihenfolge der Auswertung mehrerer Argumente
Beim Aufruf einer Funktion werden die Argumente in zeitlicher Reihenfolge von links nach rechts ausgewertet (ECMAScript 2016, 12.3.6.1 Runtime Semantics: ArgumentListEvaluation ). Daher können weiter hinten stehende Ausdrücke die Wirkungen der weiter vorne stehenden Ausdrücke erfahren.
- Auswertung
Math.floor( 7, d = 9, e = d - 2 )
7
- Auswertung
d
9
- Auswertung
e
7