Die Wirkung der Zuweisung in JavaScript (Die Wirkung der Zuweisung in JavaScript), Lektion, Seite 723729
https://www.purl.org/stefan_ram/pub/zuweisungswirkung_javascript (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
JavaScript-Kurs

Die Wirkung der Zuweisung in JavaScript 

Wirkungen von Auswertungen

Eine Auswertung kann auch eine Wirkung  haben.

Das Wort „Wirkung“ bedeutet hier das, was es auch sonst in der normalen deutschen Sprache bedeutet: eine Veränderung (eine Veränderung eines Zustandes).

Die Betrachtung solcher Wirkungen ist das Neue in diesem Kapitel des Kurses.

Wir beginnen unsere Beschäftigung mit Wirkungen mit der Zuweisung, weil eine Auswertung eines Zuweisungsausdrucks eine Wirkung hat, diese Wirkung wird im nächsten Abschnitt beschrieben.

Wirkungen einer Zuweisungsauswertung

Die Auswertung einer Zuweisung verändert den Computer so, daß eine direkt darauf folgende Auswertung des Bezeichners der Zuweisung den Wert des Ausdrucks rechts vom Gleichheitszeichen ergibt.

Eine Wirkung einer Auswertung besteht darin, daß sie etwas in der Welt verändert und/oder eine andere, spätere Auswertung beeinflußt.

Beispiel

Das folgende Beispiel wurde schon früher gezeigt.

Auswertung
( a = 3 + 4 )- 2
5

Wir zeigen hier nun aber zusätzlich den Wert des Bezeichners »a« nach  der Zuweisung.

Auswertung
a
7

Der Wert von »a« wurde durch die Auswertung von »a = 3 + 4« auf »7« gesetzt. Dies ist eine Wirkung  der Auswertung.

Beispiel

Wir können eine Zuweisung verwenden, um uns etwas zu merken.

Auswertung
a = 'Brot kaufen!'
"Brot kaufen!"

Später kann die Information dann wieder unter dem verwendeten Namen abgerufen werden.

Auswertung
a
"Brot kaufen!"

Man sieht, daß durch die erneute Zuweisung der vorherige Wert von »a« (»7«) verloren ging.

Umbindungen

Bei einer erneuten Bindung an einen Bezeichner, der schon an einen Wert gebunden ist, wird die bisherige Bindung durch eine neue Bindung ersetzt.

Protokoll
x = 2
2
x = 'Ich war eine 2.'
"Ich war eine 2."
x
"Ich war eine 2."

Der Bezeichner »x« war zunächst an den Wert «2» gebunden. Nach der Auswertung des Ausdrucks »x = 'Ich war eine 2.'« ist er aber nun an den Wert «'Ich war eine 2.'» gebunden.

Sprechweise

Eine Zuweisung mit einer bestimmten linken Seite wird auch als eine Zuweisung an  jene linke Seite bezeichnet. So ist beispielsweise die Zuweisung »a = 2« eine Zuweisung an  »a«.

Einträge im Hauptverzeichnis

Anlegen neuer Einträge

Wenn ein Wert an einen Bezeichner zugewiesen wird, dem bisher noch kein Wert zugewiesen wurde, wird ein neuer Eintrag im globalen Verzeichnis »this« mit jenem Bezeichner als Schlüssel angelegt.

Auswertung
"b" in this
false
Auswertung
b = 2
2
Auswertung
"b" in this
true
Auswertung
b
2
Auswertung
this.b
2

Genauso ist es aber auch möglich, den Eintrag bei der Zuweisug ausdrücklich mit einem echten Eintragsausdruck anzugeben.

Auswertung
this.c = 3
3

Eine spätere Verwendung des Eintrags kann mit oder ohne Qualifikation erfolgen.

Auswertung
this.c
3
Auswertung
c
3

Veränderung vorhandener Einträge

Falls ein Bezeichner schon im Hauptverzeichnis enthalten ist, und eine Zuweisung an ihn erfolgt, wird sein bisheriger Wert durch den neuen Wert ersetzt.

Auswertung
"a" in this
true
Auswertung
this.a
2
Auswertung
a = 4
4
Auswertung
a
4
Auswertung
this.a
4

Die Tatsache, daß wir unsere Einträge im Hauptverzeichnis anlegen, ist auch die Erklärung dafür, daß eingangs empfohlen wurde, Namen mit weniger als drei Zeichen  zu verwenden. Da es keine vordefinierten Namen mit weniger als drei Zeichen gibt, sind so keine Namensgleichheiten mit bereits vordefinierten Namen aus dem Hauptverzeichnis möglich, die sonst eventuell zu Störungen führen könnten.

»this« als Sammlung von Paaren aus Schlüsseln und Bindungen
.-------------------------------------.
| this |
| ---- |
|-------------------------------------|
| Schluessel | Bindung |
|------------|------------------------|
| a | Eintrag mit dem Wert 2 |
|------------|------------------------|
| b | Eintrag mit dem Wert 7 |
'-------------------------------------'

Einträge in anderen Verzeichnissen

Wir können aber auch zu anderen Verzeichnissen  Einträge hinzufügen, indem wir die entsprechende Qualifikation verwenden.

Das folgende Beispiel zeigt, wie ein Eintrag zum Verzeichnis »this.Math« hinzugefügt wird.

Auswertung
this.Math.a = 5
5
Auswertung
this.Math.a
5

Groß- und Kleinschreibung ist in JavaScript  signifikant. Dies hat zur Folge, daß der Wert von »Math.PI« im allgemeinen nicht  erscheint, falls »Math.pi« ausgewertet wird.

Auswertung
Math.pi
undefined

Falls jemand »PI« lieber klein schreiben möchte, so kann er aber nun den Wert von »Math.PI« einfach nach »Math.pi« kopieren.

Auswertung
Math.pi = Math.PI
3.141592653589793

Nun kann auch »Math.pi« mit der Bedeutung von »Math.PI« verwendet werden.

Auswertung
Math.pi
3.141592653589793
»Math« als Sammlung von Paaren aus Schlüsseln und Bindungen
.-----------------------------------------------------.
| Math |
| ---- |
|-----------------------------------------------------|
| Schluessel | Bindung |
|------------|----------------------------------------|
| PI | Eintrag mit dem Wert 3.141592653589793 |
|------------|----------------------------------------|
| pi | Eintrag mit dem Wert 3.141592653589793 |
'-----------------------------------------------------'

Syntax

Wir haben nun gesehen, daß auf der linken Seite eines Gleichheitszeichens an Stelle eines Bezeichners auch ein Eintragsausdruck  vorkommen kann, und passen unser Syntaxdiagramm entsprechend an.

Zuweisung (Syntaxdiagramm)
Ausdruck
.------------------. .-. .----------.
--->| Eintragsausdruck |--->( = )--->| Ausdruck |--->
'------------------' '-' '----------'

Einträge

Die Bedeutung eines Eintragsausdrucks unterscheidet sich in Abhängigkeit vom Ort seiner Verwendung.

Links vom Gleichheitszeichen

Wenn der Eintragsname in einer Zuweisung auf der linken Seite  des Gleichheitszeichens vorkommt, dann legt er fest, wohin der Wert des Ausdrucks der rechten Seite geschrieben werden soll.

Sonst

Wenn der Eintragsname nicht  in einer Zuweisung auf der linken Seite des Gleichheitszeichens vorkommt, dann sprechen wir von einer Verwendung  des Eintragsnamens. Bei einer Verwendung ist der Wert des Eintragsausdrucks der Wert, welcher zuletzt erfolgreich in den Eintrag geschrieben wurde.

Falls ein Eintrag mit dem angegebenen Namen nicht im angegeben Verzeichnis enthalten ist („nicht existiert“), dann führt die Verwendung eines Bezeichners zu einem Fehler, während die Verwendung eines echten Eintragsausdrucks den Wert »undefined« ergibt.

Auswertung
c
ReferenceError: c is not defined
Auswertung
this.c
undefined
Auswertung
this.Math.c
undefined

»undefined«

Wenn ein Eintrag nicht existiert, so ergeben Ausdrücke für seinen Wert manchmal den Wert »undefined«.

Auswertung
this.x
undefined

Man kann einem Eintrag auch den Wert »undefined« zuweisen. Dadurch wird der Eintrag angelegt (er existiert nun), und er enthält dann den Wert »undefined«.

Auswertung
this.x = undefined
undefined

Wertet man den Eintrag nun erneut aus, so kann man keinen Unterschied zu der Situation erkennen, in welcher der Eintrag noch gar nicht existierte!

Auswertung
this.x
undefined

Eine Auswertung ohne  »this.« zeigt aber, daß der Eintrag tatsächlich existiert.

Auswertung
x
undefined

Zum Vergleich: Wird ein nicht-existenter Eintrag ohne »this.« ausgewertet, ergibt sich eine Fehlermeldung.

Auswertung
y
ReferenceError: y is not defined

Wir können also erkennen, daß »x« existiert und den Wert »undefined« hat, während »y« gar nicht existiert.

Genauso kann auch der Operator »in« verwendet werden, um zu erkennen, ob ein Eintrag in einem Verzeichnis existiert.

Auswertung
"z" in this
false
Auswertung
z = undefined
undefined
Auswertung
"z" in this
true

Es wird von einigen Autoren empfohlen, einem Eintrag nie  den Wert »undefined« zuzuweisen, da dieser Wert so mißinterpretiert werden könnte, daß angenommen wird, daß der Eintrag gar nicht existiert. Diese Autoren empfehlen teilweise den Wert »undefined« nur für Prüfungen der Existenz eines Eintrags zu verwenden.

Jedoch wäre solch eine Mißinterpretation wohl eher durch noch nicht vollständig ausgebildete Programmierer möglich, da ausgebildete Programmierer ja wissen, daß der Wert »undefined« auch bei einem vorhandenen Eintrag möglich ist. Sie würden daher zur Prüfung gerade andere Mittel als die empfohlenen Vergleiche mit »undefined« einsetzen (wie etwa den Operator »in«).

Das Dollarzeichen »$«

Wir können nun auch zeigen, daß das Dollarzeichen »$« grundsätzlich als Name verwendet werden kann, auch wenn dies unter der Konsole von Firefox  nicht ohne Qualifikation durch ein vorangestelltes Verzeichnis möglich ist.

Auswertung
this.$ = 4
4
Auswertung
this.$
4

Fast alle anderen Sonderzeichen dürfen aber nicht in Eintragsnamen verwendet werden.

Eintragstypen

Ein Eintrag hat keine eigenen Typ. Der Typ gehört vielmehr zu dem Wert, der im Eintrag enthalten ist. Eine Zuweisung kann also den Typ eines Eintrags genauso verändern wie dessen Wert.

Auswertung
a = 3
3
Auswertung
a
3
Auswertung
typeof a
"number"
Auswertung
a = true
true
Auswertung
a
true
Auswertung
typeof a
"boolean"

Messen/Lesen

Wenn der Wert der Auswertung eines Ausdrucks durch die Umgebung der Auswertung (wie den Speichers) beeinflußt wird, wie bei der Auswertung des Ausdrucks »a«, so bezeichnen wir diese Auswertung aus als Messen  oder Lesen.

Messen bei der Auswertung von »a«
.------------.            .------------.
| Auswertung |<-----------| Umgebung |
'------------' Messen '------------'

Wirken/Schreiben

Eine Wirkung  einer Auswertung eines Ausdrucks, wie bei der Auswertung des Ausdrucks »a=«, beeinflußt die Umgebung der Auswertung (wie den Speichers), und kann auch als Schreiben  bezeichnet werden.

Wirken bei der Auswertung von »a = «
.------------.            .------------.
| Auswertung |----------->| Umgebung |
'------------' Wirken '------------'

Messen und Wirken sind die beiden Formen der Interaktion  einer Auswertung mit ihrer Umgebung.

Wirkoperatoren

Wenn die Auswertung einer Anwendung eines Operators eines eine Wirkung haben (also etwas verändern) kann, nennen wir den Operator einen Wirkoperator.

Die Zuweisung ist ein Wirkoperator, da sie den Wert eines Eintrags verändern kann.

Schädliches Ersetzen wichtiger Einträge

Es ist möglich, wichtige globale Einträge durch eine Zuweisung zu verändern.

Auswertung
this.Math.random()
0.6541786136474239
Auswertung
this.Math = 1
1
Auswertung
this.Math.random()
TypeError: this.Math.random is not a function

Es ist ein bekanntes Problem bei der JavaScript -Programmierung, daß es einem JavaScript -Programmierer versehentlich passieren kann, globale Einträge zu verändern, deren Veränderung zu Störungen führen kann.

In diesem Kurs gehen wir in der Regel davon aus, daß solche Veränderungen nicht  vorgenommen wurde, also beispielsweise »this.Math« seine ursprüngliche Bedeutung hat.

Schreibgeschützte Einträge

Einige Einträge sind schreibgeschützt.

Durch eine Zuweisung an einen schreibgeschützten Eintrag wird der Wert des Eintrags nicht verändert, obwohl der Wert der rechten Seite der Zuweisung als Wert der Zuweisung erscheint.

Auswertung
this.Infinity
Infinity
Auswertung
this.Infinity = 7
7
Auswertung
this.Infinity
Infinity

Die Funktion »Object.getOwnPropertyDescriptor« ergibt zu einem Verzeichnis und einem Eintragnamen ein Verzeichnis, das eine Beschreibung des mit dem angegebenen Namen benannten Eintrags des angegebenen Verzeichnisses durch sogenannte Attribute  enthält. Das Attribut »writable« dieses Verzeichnisses ist »true«, wenn der angegebene Eintrag durch eine Zuweisung veränderbar ist.

Auswertung
this.Object.getOwnPropertyDescriptor( this, "Math" ).writable
true
Auswertung
this.Object.getOwnPropertyDescriptor( this, "Infinity" ).writable
false

Wir können so erkennen, daß »this.Math« ein veränderbarer Eintrag ist, »this.Infinity« aber nicht.

Wenn wir einen neuen Eintrag anlegen, so ist  dieser veränderbar.

Auswertung
e = 4
4
Auswertung
this.Object.getOwnPropertyDescriptor( this, "e" ).writable
true

Verzeichniswertige Funktionen

Wir haben soeben mit »this.Object.getOwnPropertyDescriptor« eine Funktion kennengelernt, die ein Verzeichnis als Ergebnis  liefert.

Um einen Eintrag dieses Verzeichnisses anzugeben haben wir den Funktionsaufruf als Kontext (als Teil vor dem Punkt ».«) verwendet.

Im folgenden Beispiel gibt »this.Object.getOwnPropertyDescriptor( this, "e" )« ein Verzeichnis an, und »writable« ist der Name eines Eintrags aus jenem Verzeichnis.

Auswertung
this.Object.getOwnPropertyDescriptor( this, "e" ).writable
true

Die Auswahl eines Eintrages aus einem Verzeichnis, welches der Wert eines Aufrufes ist, ist dabei für uns neu.

Wir könnten auch das Ergebnis des Aufrufs zunächst unter einem Namen speichern, und dann den Eintrag ausdrücken:

Auswertung
d = this.Object.getOwnPropertyDescriptor( this, "e" )
Object { value: 4, writable: true, enumerable: true, configurable: true }
Auswertung
d.writable
true

Einer der Vorteile der Zuweisung ist es, daß komplizierte Ausdrücke, wie »this.Object.getOwnPropertyDescriptor( this, "e" ).writable«, mit ihrer Hilfe in einfacherere Ausdrücke, wie »this.Object.getOwnPropertyDescriptor( this, "e" )« und »d.writable« zerlegt werden können.

Verwendbare Namen

Da Namen mit einem oder zwei Zeichen im Hauptverzeichnis der meisten Browser oft nicht vordefiniert sind, bevorzugen wir bis auf weiteres solche kurzen Namen, um zu verhinden, daß wir versehentlich Namen ändern, die schon verwendet werden.

Übungsfragen

?   Auswertungen (Beispiel)

Was ist der Wert der Auswertungen bei der folgenden Folge von Auswertungen?

Auswertung
a = 2 + 1
?

Beispielantwort Hier sollte die Antwort „drei“ lauten.

Auswertung
a
?

Beispielantwort Hier sollte die Antwort „drei“ lauten.

?   Auswertungen

Was ist der Wert der mit einem Fragezeichen gekennzeichneten Auswertungen bei der folgenden Folge von Auswertungen?

Auswertung
v = 2
?
Auswertung
v = 0
?

?   Auswertungen

Was ist der Wert der mit einem Fragezeichen gekennzeichneten Auswertungen bei der folgenden Folge von Auswertungen?

Auswertung
v = 2
?
Auswertung
3 +( v = 5 )
?

?   Ausgabe vorhersagen

Geben Sie die sieben Zeichen der Zeichenfolge »2E3 + ", " + this.Math.pow( 2, 3 )« Zeichen für Zeichen an!

?   Auswertungen

Was ist der Wert der mit einem Fragezeichen gekennzeichneten Auswertungen bei der folgenden Folge von Auswertungen?

Auswertung
v = 7
Auswertung
3 +( v = 5 - 2 )
?

?   Auswertungen

Was ist der Wert der mit einem Fragezeichen gekennzeichneten Auswertungen bei der folgenden Folge von Auswertungen?

Auswertung
v = 7
Auswertung
3 +( v = v - 2 )
?

?   Auswertungen

Was ist der Wert der mit einem Fragezeichen gekennzeichneten Auswertungen bei der folgenden Folge von Auswertungen?

Auswertung
v = 2
Auswertung
v
?
Auswertung
v = 3
Auswertung
v
?

?   Auswertungen

Was ist der Wert der mit einem Fragezeichen gekennzeichneten Auswertungen bei der folgenden Folge von Auswertungen?

Auswertung
v = 1
Auswertung
v = v
?
Auswertung
v
?

?   Auswertungen

Was ist der Wert der mit einem Fragezeichen gekennzeichneten Auswertungen bei der folgenden Folge von Auswertungen?

Auswertung
v = 1
Auswertung
v = 2 * v
Auswertung
v
?

?   Auswertungen

Was ist der Wert der mit einem Fragezeichen gekennzeichneten Auswertungen bei der folgenden Folge von Auswertungen?

Auswertung
v = 1
Auswertung
v = 2 * v
Auswertung
v = 2 * v
Auswertung
v
?

?   Auswertungen

Was ist der Wert der mit einem Fragezeichen gekennzeichneten Auswertungen bei der folgenden Folge von Auswertungen?

Auswertung
v = 1
Auswertung
v
Auswertung
v = 2 * v
Auswertung
2 *( v = 2 * v )
Auswertung
v
?

?   Auswertungen

Was ist der Wert der mit einem Fragezeichen gekennzeichneten Auswertungen bei der folgenden Folge von Auswertungen?

Auswertung
v = 2
Auswertung
w = 7
Auswertung
v = w
Auswertung
v
?

?   Auswertungen

Was ist der Wert der mit einem Fragezeichen gekennzeichneten Auswertungen bei der folgenden Folge von Auswertungen?

Auswertung
v = 1
Auswertung
w = 2
Auswertung
v = v + w
Auswertung
w = v + w
?

?   Auswertungen

Was ist der Wert der mit einem Fragezeichen gekennzeichneten Auswertungen bei der folgenden Folge von Auswertungen?

Auswertung
v = 2
Auswertung
v = 3
Auswertung
v = 4
Auswertung
v
?

?   Auswertungen

Was ist der Wert der mit einem Fragezeichen gekennzeichneten Auswertungen bei der folgenden Folge von Auswertungen?

Auswertung
v = 2
Auswertung
v + 4
Auswertung
v
?
Auswertung
v = v + 4
Auswertung
v
?
Auswertung
( v = v + 4 ) + 4
?
Auswertung
v
?

?   Auswertungen

Was ist der Wert der mit einem Fragezeichen gekennzeichneten Auswertungen bei der folgenden Folge von Auswertungen?

Auswertung
v = 2
Auswertung
w = 7
Auswertung
v = w + 2 * v + 1
Auswertung
v
?

Übungsaufgaben

/   Erhöhen einer Zahl ⃖

Durch welchen Quelltext wird der Wert des Eintrags ≫v≪ um 7 erhöht, wenn man einmal annimmt, daß ≫v≪ zunächst an eine Zahl zwischen «0» und «1000» gebunden ist?

Zur Kontrolle Wenn man den unveränderten Quelltext zwei Mal hintereinander kopiert, sollte der Wert von ≫v≪ sich um 14 erhöhen.

/   Vertauschen ⃗

Durch welche Eingaben werden die Werte der Einträge »x« und »y« miteinander vertauscht? (In dem Sinne, daß der eine hinterher den Wert enthält, der vorher im jeweils anderen war.)

/   Erhöhen eines Numerales ⃖

Durch welche Eingabe wird der Wert des Eintrags »v« um 7 erhöht, wenn man einmal annimmt, daß »v« ein Numerale zwischen »0« und »1000« enthält?

Hier soll angenommen werden, daß der Typ des Eintrags vor dem Erhöhen »string« ist; nach dem Erhöhen soll der Eintrag auch wieder »string« sein.

Die Zuweisung in ECMAScript  (frei nach ECMA-262, June 2016) *

Wir stellen das Geschehen bei der Zuweisung hier vereinfacht dar. Dabei denken wir an eine einfache Zuweisung der Art wie sie oben behandelt wurde. Hier geht es also um Zuweisungen außerhalb von Funktionen, bei denen auf der linken Seite ein einfacher Bezeichner steht.

Zuweisung
a = 2

Verschiede Aspekte von ECMAScript wurden hier vereinfacht und entsprechen daher oft nicht dem Wortlaut der Norm. Die genaue Formulierung kann man ja im Original nachlesen.

Die hier verwendeten Begriffe „nicht-statische Methode“ und „statische Methode“ sind wie in Java  zu verstehen.

Hier angegebene Nummern von Abschnitten und Schritten beziehen sich auf ECMA-262, June 2016.

6.2.3 Referenzen

Eine Referenz »[ directory, name ]« besteht im wesentlichen aus einem Verzeichnis und einem Namen (der als Eintragsname des Verzeichnisses gedacht ist). Wir schreiben hier Referenzen mit eckigen Klammern (diese Notation ist nicht mit der Reihungsliteralnotation aus JavaScript  gleichzusetzen).

12.1.6 Die Referenz auf die linke Seite

»name« ist der auf der linken Seite der Zuweisung verwendete Name, wie beispielsweise »a«.

Bei der Zuweisung wird zunächst die linke Seite ausgewertet. Dies geschieht im wesentlich mit »ResolveBinding( name )«, welches eine Referenz ergibt.

8.3.2 »ResolveBinding( name )«

»ResolveBinding« ruft im wesentlichen »GetIdentifierReference( glob, name )« auf. Dabei ist »glob« die aktuelle lexikalische Umgebung, die am Anfang der Auswertung des Skripts gemäß 15.1.10, Schritt 1 und 7 als die globale Umgebung initialisiert wurde.

8.2.1. »GetIdentifierReference( glob, name )«

»GetIdentifierReference( glob, name )« ergibt im wesentlich die Referenz »[ glob, name ]« (nach Schritt 4.a).

12.15.4  »=« – Die Zuweisung

Nachdem wir nun die Referenz »[ glob, name ]« auf die linke Seite erhalten haben, wird bei der Zuweisung (12.15.4) im wesentlichen »PutValue( [ glob, name ], newValue )« aufgerufen.

6.2.3.2 »PutValue( [ glob, name ], newValue )«

Die Wertfestlegung ruft bei den einfachen Zuweisungen wie in dieser Lektion im wesentlichen »glob.[[Set]]( [ glob, name ], newValue, glob )« auf.

9.1.9 »glob.[[Set]]( [ glob, name ], newValue, glob )«

Diese nicht-statische Methode ruft im wesentlichen die statische Hilfsmethode 9.1.9.1 »OrdinarySet( glob, [ glob, name ], newValue, glob )« aufgerufen. Diese legt bei Bedarf mit »CreateDataProperty« einen neuen Eintrag an. Dann wird der Eintrag in jedem Fall mit »glob.[[DefineOwnProperty]]( [ glob, name ], newValue )« auf den Wert »newValue« gesetzt.

9.1.6 »[[DefineOwnProperty]]( [ glob, name ], newValue, oldValue )«

Diese nicht-statische Methode ruft im wesentlichen die statische Hilfsmethode 9.1.6.1 »OrdinaryDefineOwnPropery( glob, [ glob, name ], newValue )« auf. Diese ruft im wesentlichen 9.1.6.3 »ValidateAndApplyPropertyDescriptor( glob, [ glob, name ], newValue, oldvalue )« auf. Diese legt dann tatsächlich (im Schritt 10.a.?) den neuen Wert des Eintrags als »newValue« fest, wenn »[[Configurable]]« und »[[Writeable]]« des alten Wertes dies zulassen. (Unter bestimmten Bedingungen werden einige Attribute, wie »[[Configurable]]« und »[[Enumerable]]«, vom alten Wert übernommen werden.)

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 stefanram723729 stefan_ram:723729 Die Wirkung der Zuweisung in JavaScript Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd723729, slrprddef723729, 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/zuweisungswirkung_javascript