Die Ausdruckklammern in JavaScript (Die Ausdruckklammern in JavaScript), Lektion, Seite 722781
https://www.purl.org/stefan_ram/pub/ausdruckklammer_javascript (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
JavaScript-Kurs

Die Ausdruckklammern in JavaScript 

Einführendes Beispiel

Auswertung
( 65 )
65

Syntax

Das Zeichen »(« wird „runde Klammer auf“ genannt.

Das Zeichen »)« wird „runde Klammer zu“ genannt.

Neue, erweiterte Syntax
Ausdruck
.----------.
---.----------------->| Literal |------------.---->
| '----------' ^
| .-. .----------. .-. |
'-------->( ( )--->| Ausdruck |--->( ) )---'
| '-' '----------' '-' |
| .-. .----------. |
'-------->( - )--->| Ausdruck |------------'
| '-' '----------' |
| .-. .----------. |
'-------->( + )--->| Ausdruck |------------'
| '-' '----------' |
| .------. .----------. |
'--->( typeof )--->| Ausdruck |------------'
'------' '----------'

Syntax Wird ein Ausdruck in runde Klammern eingeschlossen, so gilt dies wieder als ein Ausdruck. Während »-« ein Präfixoperator  ist, ist »(  )« ein Zirkumfixoperator : Das heißt, »-« steht vor  seinem Operandenausdruck, aber »()« umgibt  seinen Operandenausdruck.

Typanforderungen

Typanforderungen Ein Ausdruck eines beliebigen Typs darf eingeklammert werden.

Typ

Typergebnis Der Typ des gesamten Ausdrucks ist der Typ des eingeklammerten Ausdrucks.

Die folgenden Typregeln bringen dies symbolisch zum Ausdruck. Sie sind nicht als JavaScript -Quelltext zu verstehen.

Typregel für Ausdruckklammern
( number  )= number
( string  )= string

Wert

Wert Bei der Auswertung der Ausdruckklammern wird der eingeklammerte Ausdruck ausgewertet. Der Wert des Ausdrucks mit den Klammern ist derselbe Wert, wie der Wert des Ausdrucks in den Klammern. (Das Einklammern ändert den Wert nicht.)

Auswertung
( 65 )
65
Auswertung
( "Text" )
Text

Anmerkung Die runden Klammern werden nicht von jedem als Operatoren angesehen, da der eingeklammerte Wert nicht verändert wird, und manchmal erwartet wird, daß ein Operator den Wert seines Operanden irgendwie verändert.

Syntaktische Rekursion

Da ein eingeklammerter Ausdruck wieder ein Ausdruck ist, kann dieser selber auch wieder eingeklammert werden.

Auswertung
(( 65 ))
65
Auswertung
((( 65 )))
65

Kombinationen verschiedener Operatoren

Wenn die in diesem Kurs oft einzeln  vorgestellten Sprachelemente angewendet  werden, werden sie oft miteinander kombiniert. In diesem Kurs können nicht alle möglichen Kombinationen vorgestellt werden. Der Leser muß später also selber an die Möglichkeit denken, neue Kombinationen bilden zu können.

Beispielhaft werden hier einige mögliche Kombinationen gezeigt:

Der Klammeroperator kann einen beliebigen Ausdruck einklammern. Dies kann auch ein Ausdruck sein, der mit einem Minusoperator gebildet wurde.

Auswertung
( -65 )
-65
syntaktische Kombination
Ausdruck
.----------------------------.
| Ausdruck |
.-. | .-. .----------. | .-.
--->· ( ·-->|--->· - ·-->| Ausdruck |--->|--->· ) ·--->
'-' | '-' '----------' | '-'
| |
'----------------------------'

Der Minusoperator kann vor einem beliebigen numerischen Ausdruck stehen. Dies kann auch ein numerischer Ausdruck sein, der mit einem Klammeroperator gebildet wurde.

Auswertung
-( 65 )
-65
syntaktische Kombination
Ausdruck
.-------------------------------------.
| Ausdruck |
.-. | .-. .----------. .-. |
--->· - ·-->|--->· ( ·-->| Ausdruck |--->· ) ·--->|--->
'-' | '-' '----------' '-' |
| |
'-------------------------------------'

Das folgende Beispiel zeigt, wie die Klammern (an Stelle eines Leerraums) verwendet werden können, um eine Folge zweier Minusoperatoren (im Gegensatz zum Operator »--«) zu bilden.

Auswertung
-(-65)
65

Da die Klammern den Wert eines eingeklammerten Ausdrucks nicht verändern, ordnen wir ihnen keine eigenständige Operation zu. Das heißt beispielsweise, daß bei der Auswertung von »-(-65)« zwei Operationen stattfinden: zuerst die Auswertung des inneren Minus-Ausdrucks, dann die Auswertung des äußeren Minus mit dem Ergebnis der vorherigen Operation als Argumentwert.

Auch ohne Klammern wird eine (leerraumgetrennte) Folge zweier Minusoperatoren als Anwendung des linken Minusoperators auf des Ergebnis des rechten interpretiert (und nicht als Anwendung des linken Operators auf den rechten Operator), also ist »- -65« gleich »-(-65)« und nicht gleich »(- -)65«. Dies wird auch manchmal beschrieben, indem der Operator »-« als „rechtsassoziativ“ bezeichnet wird.

Auswertung
- -65
65

Spezielle Zeichenkombinationen ⃗

Wir haben nun schon über die lexikalische Einheit »--« gesprochen und erfahren, daß zwei einzelne Minuszeichen »-« durch Leerraum getrennt werden müssen, wenn sie nicht als die spezielle lexikalische Einheit »--« interpretiert werden sollen. Es gibt einige solcher spezieller Zeichenkombinationen, die eine besondere Bedeutung haben.

An dieser Stelle listen wir nun spezielle Zeichenkombinationen auf, die keine Wörter oder Literale sind und aus mindestens zwei Zeichen bestehen. Darunter finden wir beispielsweise auch wieder die lexikalische Einheit »--«. Als ein Sonderzeichen sehen wir in diesem Abschnitt ein Zeichen an, das in einer der unten aufgelisteten speziellen Zeichenkombinationen vorkommt.

In einem Programm sind Sonderzeichen durch Leerraum zu trennen, wenn sie sonst eine der im folgenden aufgelisteten speziellen Zeichenkombinationen bilden würden, aber diese nicht geschrieben werden soll.

Will man beispielsweise zwei Plus-Vorzeichen »+« hintereinander schreiben, so kann man der Auflistung entnehmen, daß so die spezielle lexikalische Einheit »++« entstehen würde. Um dies zu vermeiden, sind Zeichen, die zwei einzelne Plus-Vorzeichen »+« sein sollen, mit einem Leerraum voneinander getrennt zu schreiben.

Will man aber zwei runde Klammern »(« hintereinander schreiben, so kann man der Auflistung entnehmen, daß es keine  spezielle lexikalische Einheit »((« gibt. Deswegen können diese beiden Zeichen direkt hintereinander geschrieben werden und bleiben doch jeweils einzelne lexikalische Einheiten.

Um die obige Regel anzuwenden, ist es nicht nötig, zu wissen, was all diese speziellen Zeichenkombinationen bedeuten. Einige von ihnen werden aber in späteren Lektionen vorgestellt werden.

Im Zweifel kann man immer ein Leerzeichen vor und hinter jede lexikalische Einheit schreiben, wenn verhindert werden soll, daß sie mit benachbarten Zeichen zu einer speziellen Zeichenkombinationen verschmilzt.

Spezielle Zeichenkombinationen
!=
!==
%=
&&
&=
*=
++
+=
--
-=
...
/*
//
/=
<<
<<=
<=
==
===
=>
>=
>>
>>=
>>>
>>>=
^=
|=
||

Übungsfragen

?   Übungsfrage

Welcher der folgenden Texte ist nach dem folgenden Syntaxdiagramm ein Ausdruck?

Neue, erweiterte Syntax
Ausdruck
.----------.
---.----------------->| Literal |------------.---->
| '----------' ^
| .-. .----------. .-. |
'-------->( ( )--->| Ausdruck |--->( ) )---'
| '-' '----------' '-' |
| .-. .----------. |
'-------->( - )--->| Ausdruck |------------'
| '-' '----------' |
| .-. .----------. |
'-------->( + )--->| Ausdruck |------------'
| '-' '----------' |
| .------. .----------. |
'--->( typeof )--->| Ausdruck |------------'
'------' '----------'
A »(-)«
B »(2)«
C »()«
D »(number)«
E »(2«
F »(2)2«

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 stefanram722781 stefan_ram:722781 Die Ausdruckklammern in JavaScript Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd722781, slrprddef722781, 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/ausdruckklammer_javascript