1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
|
---
title: 'TypeError: invalid assignment to const "x"'
slug: Web/JavaScript/Reference/Fehler/Invalid_const_assignment
tags:
- Error
- JavaScript
- TypeError
translation_of: Web/JavaScript/Reference/Errors/Invalid_const_assignment
---
<div>{{jsSidebar("Errors")}}</div>
<h2 id="Fehlermeldung">Fehlermeldung</h2>
<pre class="syntaxbox">TypeError: invalid assignment to const "x" (Firefox)
TypeError: Assignment to constant variable. (Chrome)
TypeError: Redeclaration of const 'x' (IE/Edge)
</pre>
<h2 id="Fehlertyp">Fehlertyp</h2>
<p>{{jsxref("TypeError")}}</p>
<h2 id="Was_ist_falsch_gelaufen">Was ist falsch gelaufen?</h2>
<p>Eine Konstante ist ein Wert, der nicht von einem Programm während der normalen Ausführung, geändert werden kann. Sie kann nicht durch erneutes Zuweisen und Neudeklarationen geändert werden. In JavaScript werden Konstanten mit dem <code><a href="/de/docs/Web/JavaScript/Reference/Statements/const">const</a></code> Schlüsselwort deklariert.</p>
<h2 id="Beispiel">Beispiel</h2>
<h3 id="Nicht_valide_Neudeklaration">Nicht valide Neudeklaration</h3>
<p>Weist eine Konstanten erneut einen Wert zu. Führt zu einem Fehler.</p>
<pre class="brush: js example-bad">const COLUMNS = 80;
// ...
COLUMNS = 120; // TypeError: invalid assignment to const `COLUMNS'</pre>
<h3 id="Den_Fehler_auflösen">Den Fehler auflösen</h3>
<p>Es gibt mehrere Optionen, um den Fehler zu vermeiden. <span id="result_box" lang="de"><span>Überprüfen Sie, was mit der betreffenden Konstante erreicht werden sollte.</span></span></p>
<h4 id="Umbenennen">Umbenennen</h4>
<p><span id="result_box" lang="de"><span>Wenn Sie eine andere Konstante deklarieren möchten, wählen Sie einen anderen Namen und benennen Sie ihn um.</span> <span>Dieser konstante Name ist dann in diesem Bereich vergeben.</span></span></p>
<pre class="brush: js example-good">const COLUMNS = 80;
const WIDE_COLUMNS = 120;</pre>
<h4 id="const_let_or_var"><code>const</code>, <code>let</code> or <code>var</code>?</h4>
<p><span id="result_box" lang="de"><span>Verwenden Sie nicht <code>const</code>, wenn Sie keine Konstante deklarieren wollten. Vielleicht soll eine Blockvariable mit </span></span><code><a href="/de/docs/Web/JavaScript/Reference/Statements/let">let</a></code> oder eine globale Variable mit <code><a href="/de/docs/Web/JavaScript/Reference/Statements/var">var</a></code> deklariert werden.</p>
<pre class="brush: js example-good">let columns = 80;
// ...
let columns = 120;
</pre>
<h4 id="Gültigkeitsbereich">Gültigkeitsbereich</h4>
<p>Prüfen Sie, ob Sie im richtigen Gültigkeitsbereich sind. Sollte diese Konstante in diesen Gültigkeitsbereich oder sollte diese zum Beispiel in eine Funktion.</p>
<pre class="brush: js example-good">const COLUMNS = 80;
function setupBigScreenEnvironment() {
const COLUMNS = 120;
}</pre>
<h3 id="const_und_Unveränderlichkeit"><code>const</code> und Unveränderlichkeit</h3>
<p>Die <code>const</code> Deklaration erstellt eine nur lesbare Referenz zu einem Wert. Das bedeutet nicht, dass der enthaltene Wert Unveränderbar ist, sondern nur, dass der Bezeichner nicht neu definiert werden kann. Wenn die Konstante zum Beispiel ein Objekt ist, kann das Objekt selbst verändert werden. Es bedeutet nur, dass der Wert in der Variable nicht verändert werden kann.</p>
<pre class="brush: js example-bad">const obj = {foo: 'bar'};
obj = {foo: 'baz'}; // TypeError: invalid assignment to const `obj'
</pre>
<p>Aber man kann die Eigenschaften der Variable verändern:</p>
<pre class="brush: js example-good">obj.foo = 'baz';
obj; // Object { foo: "baz" }</pre>
<h2 id="Siehe_auch">Siehe auch</h2>
<ul>
<li><code><a href="/de/docs/Web/JavaScript/Reference/Statements/const">const</a></code></li>
<li><code><a href="/de/docs/Web/JavaScript/Reference/Statements/let">let</a></code></li>
<li><code><a href="/de/docs/Web/JavaScript/Reference/Statements/var">var</a></code></li>
</ul>
|