Eintragsausdrücke in JavaScript (Eintragsausdrücke in JavaScript), Lektion, Seite 723388
https://www.purl.org/stefan_ram/pub/eintragsausdruecke_javascript (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
JavaScript-Kurs

Eintragsausdrücke in JavaScript 

Die folgende Beispiele zeigt, daß direkt vor einem Namen (hier »Infinity« oder »PI«) manchmal auch ein Punkt ».« stehen darf, dem ein Wort (hier »this« oder »Math«) vorangeht.

Auswertung
this.Infinity
Infinity
Auswertung
Math.PI
3.141592653589793

Im folgenden sollen nun solche Ausdrücke, wie beispielsweise »this.Infinity«, näher beschrieben werden.

Zunächst einmal sei eine kurze Erklärung der Bedeutung vorangestellt: In JavaScript  kann der Bezeichner »Infinity« verschiedene  Bedeutungen (Werte) haben. Durch Voranstellung von »this.« wird festgelegt, welche  Bedeutung gemeint ist.

Man stelle sich vor, daß »Infinity« in dem Verzeichnis »this« eingetragen ist und »this.Infinity« dann bedeutet „der Wertname »Infinity« der in dem Verzeichnis  »this« (und nicht  in irgendeinem anderen Verzeichnis, in dem es auch noch einen Wertnamen »Infinity« geben könnte) eingetragen ist“.

Verzeichnisse

Ein Verzeichnis  ist etwas, das benannten Einträge aufnehmen kann. Jeder Eintrag hat einen Namen und einen Wert.

Beispielsweise ist »Math« ein Verzeichnis, das den Namen »PI« mit dem Wert «3.141592653589793» enthält.

Ein Verzeichnis ist gleichzeitig selber auch ein Wert (wie eine Zahl oder ein Text). Dies bedeutet beispielsweise, daß ein Verzeichnis der Wert eines Ausdrucks sein kann. Beispielsweise ist der Wert des Ausdrucks »this« ein Verzeichnis..

(Da ein Verzeichnis Werte enthalten kann und gleichzeitig auch selber ein Wert ist, kann ein Verzeichnis auch Verzeichnisse enthalten. Man denke hierbei auch an die Verzeichnisse eines Dateisystems (einer Festplatte), die ebenfalls Verzeichnisse enthalten können.)

Arten von Werten
Werte
- Fundamentalwerte
- Zahlen
- Zeichenfolgen
- Wahrheitswerte
- Verzeichnisse

Die Syntax  echter Eintragsausdrücke

Einen Ausdruck der aus einem Bezeichner besteht, dem ein Punkt ».« und ein Bezeichnername folgt, nennen wir einen echten Eintragsausdruck.

Echter Eintragsausdruck

Ausdruck

.------------. .-. .----------------.
---.---| Bezeichner |---.--->( . )--->| Bezeichnername |--->
| '------------' ^ '-' '----------------'
| .----. |
'----->( this )------'
'----'

Beispiele echter Eintragsausdrücke

this.Infinity

Math.PI

Ein echter Eintragsausdruck darf hinter einem Punkt also einen beliebigen Bezeichnernamen  enthalten (auch reservierte Wörter sind dort gestattet), während vor dem ersten Punkt ein Bezeichner oder »this« stehen muß.

Das Attribut „echt“ soll die Eintragsausdrücke mit einem Punkt von Eintragsausdrücken ohne Punkt unterscheiden, die es in ECMAScript  auch gibt. In ECMAScript  gilt »Infinity« nämlich ebenfalls als ein Eintragsausdruck, obwohl es keinen Punkt enthält. Zur Unterscheidung von den Eintragsausdrücken, nennen wir hier die Eintragsausdrücke mit einem Punkt „echte Eintragsausdrücke“.

Eintragsausdrücke

Ein Eintragsausdruck  ist ein Bezeichner  oder ein echter Eintragsausdruck.

Eintragsausdruck: “MemberExpression” in ECMAScript 2018, “12.3 Left-Hand-Side Expressions”

Lexikalische Einheiten

Jeder Bezeichner, jeder Bezeichnername und jedes Literal stellt eine lexikalische Einheit  dar. Der Punkt ».« vor dem Bezeichnernamen eines echten Eintragsausdrucks ist ebenfalls eine lexikalische Einheit. Das Wort »this« ist ebenfalls eine lexikalische Einheit.

(In einem Punktnumerale, wie »3.2« ist der Punkt aber keine lexikalische Einheit, sondern nur das gesamte Numerale.)

Das folgende Beispiel einer Auswertung zeigt einen echten Eintragsausdruck mit zwischen die lexikalischen Einheiten eingefügtem Leerraum.

Auswertung
this   .   Infinity
Infinity

Obwohl der Punkt von Leerraum umgeben sein darf, ist er kein  Operator, da der rechte Bezeichnername in einem echten Eintragsausdruck darin nicht als ein Ausdruck vorkommt und deswegen kein Operand sein kann.

»this.« kann oft entfallen

In dem meisten Fällen kann in diesem Kapitel des Kurses ein »this.« am Anfang eines Eintragsausdrucks auch entfallen.

Man kann also statt »this.Infinity« in diesem Kapitel des Kurses auch einfach nur »Infinity« schreiben.

Die Semantik  von Eintragsausdrücken (Verzeichnisse und elementare Werte)

Ein Paar aus einem Bezeichnernamen und einen Wert nennen wir einen Eintrag.

Ein Eintrag
PI: 3.141592653589793 

Wir nennen den „linken“ Teil eines Eintrags (wie beispielsweise »PI«) auch den Namen  oder den Schlüssel  des Eintrags. Den „rechten“ Teil eines Eintrags (wie beispielsweise «3.141592653589793») nenne wir den Wert  des Eintrags (oder auch den Wert des Namens oder den Wert des Schlüssels). Mit diesen Begriffen können wir sagen, daß ein Verzeichnis seinen Schlüsseln Werte zuordnet.

Eine Sammlung von Einträgen bezeichnen wir hier auch als ein Verzeichnis. Dabei sollen zwei Einträge nie denselben Schlüssel miteinander teilen. (Solch eine Sammlung erinnert an Verzeichnisse von Dateisystemen oder Abbildungen aus der Mathematik.)

»Math« als Sammlung von Zuordnungen
.-------------------------.
| Math |
| ---- |
|-------------------------|
| PI: 3.141592653589793 |
| LN2: 0.6931471805599453 |
'-------------------------'

Bei einem echten Eintragsausdruck, wie »Math.PI«, hat der der Ausdruck vor dem Punkt, wie beispielsweise »Math«, also ebenfalls einen Wert. Dieser Wert ist aber kein  Wert, wie eine Zahl oder ein Text, sondern eine Sammlung von Zuordnungen  von Bezeichnernamen zu Werten.

Eine Zahl oder einen Text nennen wir auch einen elementaren Wert, wenn sie von den Verzeichnissen unterschieden werden sollen.

Der Wert eines Ausdrucks aus einem Bezeichner für ein Verzeichnis, einem Punkt ».« und einem Bezeichnernamen ist der Wert, der sich auf der rechten Seite in dem Eintrag mit dem angegebenen Bezeichnernamen auf der linken Seite befindet. So ist der Wert von »Math.PI« beispielweise der Wert aus der rechten Seite des Eintrags »PI: 3.141592653589793« in dem Verzeichnis »Math«.

Der Wortbestandteil „Eintrag-“ in der oben erklärten Bezeichnung „echter Eintragsausdruck“ kommt daher, daß ein echter Eintragsausdruck einen Eintrag  aus einem Verzeichnis angibt.

Wenn über einen Eintrag eines Verzeichnisses gesprochen wird, so wird das Verzeichnis in diesem Zusammenhang auch manchmal als das Zielverzeichnis  (des Eintrags) bezeichnet. Wird beispielsweise über den Ausdruck »this.Infinity« gesprochen, so wäre »this« ein Ausdruck für das Zielverzeichnis  (von »Infinity«).

Die Sinnfamilie „Qualifikation“

Eine nähere Bestimmung nennt man auch ein „Qualifikation“.

Man sagt, daß der Bezeichnername »PI« im Eintragsausdruck »Math.PI« durch »Math« qualifiziert  sei und nennt »Math« auch die Qualifikation  von »PI« in »Math.PI«. Umgekehrt nennt man das »PI« ohne Qualifikation auch unqualifiziertes  »PI«.

Eigentliche Namen

Den unqualifizierten Bezeichnernamen am Ende eines Eintragsausdruck nennen wir auch einen eigentlichen Namen. Der eigentliche Name von »Math.PI« ist also beispielsweise »PI«.

Der Kontext

Den Teil eines Eintragsausdrucks, der vor dem eigentlichen Namen steht, nennen wir auch manchmal den Kontext  des eigentlichen Namens. Der Kontext im Ausdruck »Math.PI« ist beispielsweise »Math«.

»Math« ist der Name eines Verzeichnisses, aber der Begriff „Kontext“ bezieht sich mehr auf den Namen »Math« selber und nicht auf dessen Bedeutung (auf das Verzeichnis).

Eigenschaften

Ein Eintrag eines Verzeichnisse wird oft auch als eine Eigenschaft  (dieses Verzeichnisses) bezeichnet.

Namen

In diesem Kurs werden Eintragsausdrücke auch oft als „Namen“ bezeichnet.

Übungsfragen

?   Echte Eintragsausdrücke

Welche der folgenden Ausdrücke sind echte Eintragsausdrücke?

?   Lexikalische Einheiten ⃗

Wie viele lexikalische Einheiten umfassen die folgenden Ausdrücke jeweils?

Zitate *

ECMA-262, 2015-06 (Zitate vereinfacht)
12.3 Left-Hand-Side Expressions
MemberExpression :
PrimaryExpression
MemberExpression . IdentifierName
12.2 Primary Expression
PrimaryExpression :
this
Identifier
Literal
( Expression )

Details zur Syntax von Eintragsausdrücken *

In diesem Abschnitt werden nun Details zur Syntax von Eintragsausdrücken vorgestellt, welche die Syntax etwas näher an der Darstellung in ECMAScript  wiedergeben, aber beim ersten Lesen dieses Kurses auch ignoriert werden können.

Primärausdrücke *

Einige der Ausdrücke, die wir bisher kennengelernt haben, werden fachsprachlich als „Primärausdrücke“ bezeichnet.

Man kann sich unter einem Primärausdruck einen Ausdruck vorstellen, der praktisch nie  eingeklammert werden muß, um als Ausdruck zu gelten. Im Vergleich dazu muß der Ausdruck »2 + 3« ja eingeklammert werden, damit er im Ausdruck »5 *( 2 + 3 )« noch als ein Ausdruck gilt.

Ein Primärausdruck kann das Wort »this«, ein Bezeichner, ein Literal oder ein eingeklammerter Ausdruck sein.

Primärausdruck (Syntaxdiagramm)
Primaerausdruck
.----.
---.-------------->( this )--------------.--->
| '----' ^
| .------------. |
'----------->| Bezeichner |-----------'
| '------------' |
| .---------. |
'------------>| Literal |-------------'
| '---------' |
| .-. .----------. .-. |
'--->( ( )--->| Ausdruck |--->( ) )---'
'-' '----------' '-'
Primärausdrücke (Beispiele)
this
Infinity
123
(123)

Eintragsausdrücke *

Ein Eintragsausdruck  ist entweder ein Eintragsausdruck mit einem direkt folgenden Punkt ».« und einem jenem Punkte direkt folgenden Bezeichnernamen, oder ein Primärausdruck. (Bezeichnernamen wurden ja schon in einer früheren Lektion durch ein morphologisches Diagramm definiert.)

Im Syntaxdiagramm wird der Aufbau eines Eintragsausdrucks durch ein rekursives  Diagramm beschrieben.

Eintragsausdrucke (Syntaxdiagramme)

Eintragsausdruck
.------------------.
--->| Primaerausdruck |--->
'------------------'

Eintragsausdruck
.------------------. .-. .----------------.
--->| Eintragsausdruck |-->( . )--->| Bezeichnername |--->
'------------------' '-' '----------------'

Wir nennen einen Eintragsausdruck, der kein  Primärausdruck ist, einen echten Eintragsausdruck.

Die Struktur eines echten Eintragsausdrucks besteht darin, daß ein echter Eintragsausdruck ein Bezeichnername ist, vor dem noch ein durch einen Punkt ».« abgetrennter Eintragsausdruck steht.

Ein Eintragsausdruck besteht also entweder aus einem Namen, einem Punkt ».« (unteres Syntaxdiagramm) und einem Bezeichner oder nur aus einem Bezeichner (oberes Syntaxdiagramm).

Das Wort »this« ist ein Primärausdruck und somit selber bereits ein Eintragsausdruck (oberes Syntaxdiagramm).

Der Eintragsausdruck »this.Infinity« wird durch den Punkt in den Eintragsausdruck »this« einerseits und den Bezeichnernamen »Infinity« andererseits zerlegt (unteres Syntaxdiagramm).

»this.Infinity« (syntaktische Analyse)

this . Infinity

Primaerausdruck

Eintragsausdruck Bezeichnername

'--------------- Eintragsausdruck -------------'

Verschachtelte Eintragsausdrücke *

Ein echter Eintragsausdruck besteht aus einem Bezeichnernamen, vor dem wieder ein Eintragsausdruck steht.

Eintragsausdrucke (Syntaxdiagramme)

Eintragsausdruck
.------------------.
--->| Primaerausdruck |--->
'------------------'

Eintragsausdruck
.------------------. .-. .----------------.
--->| Eintragsausdruck |-->( . )--->| Bezeichnername |--->
'------------------' '-' '----------------'

Der erste Eintragsausdruck eines echten Eintragsausdrucks kann seinerseits nun auch wieder ein echter Eintragsausdruck sein und einen weiteren Punkt enthalten. So ist beispielsweise der Eintragsausdruck »this.Math.PI« aufgebaut.

Auswertung
this.Math.PI
3.141592653589793

Das Wort »this« ist ein Primärausdruck und somit ein Eintragsausdruck (oberes Syntaxdiagramm).

Der echte Eintragsausdruck »this.Math« wird durch den Punkt in den Eintragsausdruck »this« einerseits und den Bezeichnernamen »Math« andererseits zerlegt (unteres Syntaxdiagramm).

Der echte Eintragsausdruck »this.Math.PI« wird durch den rechtesten Punkt in den Eintragsausdruck »this.Math« einerseits und den Bezeichnernamen »PI« andererseits zerlegt (unteres Syntaxdiagramm).

Der gesamte Eintragsausdruck »this.Math.PI« wird also linksassoziativ  interpretiert, das heißt, von links nach recht zusammengefaßt, also so, daß »this.Math« darin eine Einheit bildet.

Die folgende Auswertung, bei welcher der erste echte Eintragsausdruck eingeklammert ist, verdeutlich die Linksassoziativität: Die Bedeutung mit  diesen Klammern ist dieselbe wie ohne  sie.

Auswertung
( this.Math ).PI
3.141592653589793
»this.Math.PI« (syntaktische Analyse)

this . Math . PI

Primaerausdruck

Eintragsausdruck Bezeichnername

'--------------- Eintragsausdruck --------------' Bezeichnername

'----------------------------- Eintragsausdruck ------------------------------'

Syntax von Ausdrücken *

Wir können die Syntax von Ausdrücken nun um die Definition von Eintragsausdrücken  erweitern.

Neue, erweiterte Syntax
Ausdruck
.------------------.
---.----------------->| Primaerausdruck |-------------------------------.---->
| '------------------' ^
| .------------------. |
'----------------->| Eintragsausdruck |-------------------------------'
| '------------------' |
| .-. .------------------. |
'-------->( - )--->| Ausdruck |-------------------------------'
| '-' '------------------' |
| .-. .------------------. |
'-------->( + )--->| Ausdruck |-------------------------------'
| '-' '------------------' |
| .------. .------------------. |
'--->( typeof )--->| Ausdruck |-------------------------------'
| '------' '------------------' |
| .------------------. .---. .----------. |
'----------------->| Ausdruck |--->( * )--->| Ausdruck |----'
| '------------------' '---' '----------' |
| .------------------. .---. .----------. |
'----------------->| Ausdruck |--->( / )--->| Ausdruck |----'
| '------------------' '---' '----------' |
| .------------------. .---. .----------. |
'----------------->| Ausdruck |--->( + )--->| Ausdruck |----'
| '------------------' '---' '----------' |
| .------------------. .---. .----------. |
'----------------->| Ausdruck |--->( - )--->| Ausdruck |----'
| '------------------' '---' '----------' |
| .------------------. .---. .----------. |
'----------------->| Ausdruck |--->( === )--->| Ausdruck |----'
| '------------------' '---' '----------' |
| .------------------. .---. .----------. |
'----------------->| Ausdruck |--->( !== )--->| Ausdruck |----'
'------------------' '---' '----------'
Neue, erweiterte Syntax (vereinfacht)

Eintragsausdruck
.------------------.
--->| Primaerausdruck |--->
'------------------'

Eintragsausdruck
.------------------. .-. .----------------.
--->| Eintragsausdruck |-->( . )--->| Bezeichnername |--->
'------------------' '-' '----------------'

Primaerausdruck
.----.
---.-------------->( this )--------------.--->
| '----' ^
| .------------. |
'----------->| Bezeichner |-----------'
| '------------' |
| .---------. |
'------------>| Literal |-------------'
| '---------' |
| .-. .----------. .-. |
'--->( ( )--->| Ausdruck |--->( ) )---'
'-' '----------' '-'

Zitat *

Zitat (vereinfacht), ECMAScript 2016, 12.3 *

MemberExpression :

MemberExpression . IdentifierName

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 stefanram723388 stefan_ram:723388 Eintragsausdrücke in JavaScript Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd723388, slrprddef723388, 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/eintragsausdruecke_javascript