aboutsummaryrefslogtreecommitdiff
path: root/files/de/web/javascript/reference/fehler/unterminated_string_literal/index.html
blob: 3d60240b5136807020ed8b8965d7dc5d2e2cfd0d (plain)
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
---
title: 'SyntaxError: unterminated string literal'
slug: Web/JavaScript/Reference/Fehler/Unterminated_string_literal
tags:
  - Errors
  - JavaScript
  - SyntaxError
translation_of: Web/JavaScript/Reference/Errors/Unterminated_string_literal
---
<div>{{jsSidebar("Errors")}}</div>

<h2 id="Fehlermeldung">Fehlermeldung</h2>

<pre class="syntaxbox">SyntaxError: unterminated string literal
</pre>

<h2 id="Fehlertyp">Fehlertyp</h2>

<p>{{jsxref("SyntaxError")}}</p>

<h2 id="Was_ist_falsch_gelaufen">Was ist falsch gelaufen?</h2>

<p>Es gibt irgendwo einen nicht beendeten {{jsxref("String")}}. Stringliterale müssen mit einfachen (<code>'</code>) oder doppelten (<code>"</code>) Anführungszeichen umschlossen sein. JavaScript unterscheidet nicht zwischen Strings, die mit einfachen oder doppelten Anführungszeichen umschlossen sind. <a href="/de/docs/Web/JavaScript/Reference/Global_Objects/String#Escape_notation">Maskierte Sequenzen</a> funktionieren in Strings mit einfachen und doppelten Anführungszeichen. Um den Fehler zu beheben, sollte folgendes überprüft werden:</p>

<ul>
 <li>Es gibt öffnende und schließende Anführungszeichen (einfache oder doppelte) für alle Stringliterale,</li>
 <li>Stringliterale sind richtig maskiert,</li>
 <li>Stringliterale funktionieren richtig über mehrere Zeilen, wenn es solche gibt.</li>
</ul>

<h2 id="Beispiele">Beispiele</h2>

<h3 id="MehrereZeilen">MehrereZeilen</h3>

<p>Man kann Strings nicht über mehrere Zeilen in JavaScript schreiben:</p>

<pre class="brush: js example-bad">var longString = 'This is a very long string which needs
                  to wrap across multiple lines because
                  otherwise my code is unreadable.';
// SyntaxError: unterminated string literal</pre>

<p>Stattdessen muss ein <a href="/de/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators#Addition">+ Operator</a>, ein Backslask oder ein <a href="/de/docs/Web/JavaScript/Reference/Template_literals">Templateliteral</a> eingesetzt werden. Die <code>+</code> Operator Variante sieht wie folgt aus:</p>

<pre class="brush: js example-good">var longString = 'This is a very long string which needs ' +
                 'to wrap across multiple lines because ' +
                 'otherwise my code is unreadable.';
</pre>

<p>Oder man benutzt ein Backslash Zeichen ("\") am ende jeder Zeile, um anzudeuten, dass der String in der nächsten Zeile weiter geht. Man muss sicherstellen, dass keine Leerzeichen oder andere Zeichen nach dem Backslash stehen (ausgenommen der Zeilenumbruch) oder als Einrückung, ansonsten wird es nicht funktionieren. Diese Form sieht wie folgt aus:</p>

<pre class="brush: js example-good">var longString = 'This is a very long string which needs \
to wrap across multiple lines because \
otherwise my code is unreadable.';
</pre>

<p>Eine andere Möglichkeit ist der Einsatz von <a href="/de/docs/Web/JavaScript/Reference/Template_literals">Templateliteralen</a>, welche in ECMAScript 2015 Umgebungen unterstützt werden:</p>

<pre class="brush: js example-good">var longString = `This is a very long string which needs
                  to wrap across multiple lines because
                  otherwise my code is unreadable.`;</pre>

<h2 id="Siehe_auch">Siehe auch</h2>

<ul>
 <li>{{jsxref("String")}}</li>
 <li><a href="/de/docs/Web/JavaScript/Reference/Template_literals">Templateliterale</a></li>
</ul>