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
|
---
title: 'SyntaxError: illegal character'
slug: Web/JavaScript/Reference/Fehler/Illegal_character
tags:
- Error
- Errors
- JavaScript
- SyntaxError
translation_of: Web/JavaScript/Reference/Errors/Illegal_character
---
<div>{{jsSidebar("Errors")}}</div>
<h2 id="Fehlermeldung">Fehlermeldung</h2>
<pre class="syntaxbox">SyntaxError: illegal character (Firefox)
SyntaxError: Invalid or unexpected token (Chrome)
</pre>
<h2 id="Fehlertyp">Fehlertyp</h2>
<p>{{jsxref("SyntaxError")}}</p>
<h2 id="Was_ist_falsch_gelaufen">Was ist falsch gelaufen?</h2>
<p>Es gibt ein nicht valides oder nicht erwartetes Token, welches nicht an eine Position im Code passt. Man sollte einen Editor mit Syntaxhighlighting benutzten und vorsichtig nach Verwechselungen suchen, wie einem Minuszeichen (<code> - </code>) und einem Dashzeichen (<code> – </code>) oder einfachen Anführungszeichen (<code> " </code>) und anderen Anführungszeichen (<code> “ </code>).</p>
<h2 id="Beispiele">Beispiele</h2>
<h3 id="Verwechseltes_Zeichen">Verwechseltes Zeichen</h3>
<p>Einige Zeichen sehen sehr ähnlich aus, aber führen dazu, dass der Code nicht interpretiert werden kann. Bekannte Beispiele dafür sind Anführungszeichen, das Minus oder das Semikolon (<a href="https://de.wikipedia.org/wiki/Fragezeichen#Weitere_Schriftsysteme">griechisches Fragezeichen (U+37e)</a> sieht genauso aus)</p>
<pre class="brush: js example-bad line-numbers language-js">“This looks like a string”; // SyntaxError: illegal character
// “ und ” sind nicht ", aber sehen so aus
42 – 13; // SyntaxError: illegal character
// – sind nicht -, aber sieht so aus
var foo = 'bar'; <code class="language-js"><span class="comment token">// SyntaxError: illegal character
</span></code>// <37e> sind nicht ;, aber sieht so aus
</pre>
<p>Das funktioniert:</p>
<pre class="brush: js example-good">"This is actually a string";
42 - 13;
var foo = 'bar';
</pre>
<p>Einige Editoren und IDEs werden darauf hinweisen oder dieses anderes hervorheben, aber nicht alle. Wenn manchmal so etwas im Code passiert und man in der Lage ist das Problem zu finden, ist es oft das beste die Zeile zu löschen und sie neu einzutippen.</p>
<h3 id="Vergessene_Zeichen">Vergessene Zeichen</h3>
<p>Es passiert schnell, dass man ein Zeichen vergisst.</p>
<pre class="brush: js example-bad">var colors = ['#000', #333', '#666'];
// SyntaxError: illegal character
</pre>
<p>Man muss das fehlende Anführungszeichen ergänzen <code><strong>'</strong>#333'</code>.</p>
<pre class="brush: js example-good">var colors = ['#000', '#333', '#666'];</pre>
<h3 id="Nicht_sichtbare_Zeichen">Nicht sichtbare Zeichen</h3>
<p>Beim Kopieren und Einfügen von Code aus externen Quellen kann es nicht valide Zeichen geben. Zum Beispiel:</p>
<pre class="brush: js example-bad">var foo = 'bar';
// SyntaxError: illegal character
</pre>
<p>Wenn man den Code in einem Editor wie Vim anschaut, bemerkt man, dass ein<a href="https://de.wikipedia.org/wiki/Breitenloses_Leerzeichen"> breitenloses Leerzeichen (ZWSP) (U+200B)</a> benutzt wird.</p>
<pre class="brush: js">var foo = 'bar';<200b></pre>
<h2 id="Siehe_auch">Siehe auch</h2>
<ul>
<li><a href="/de/docs/Web/JavaScript/Reference/Lexical_grammar">Lexikalische Grammatik</a></li>
</ul>
|