Meerregelige tekenreeksen in JavaScript

Bij het programmeren met JavaScript struikelt men vaak over het onvermogen om meerregelige strings te realiseren door ze ook in meerdere regels in de code in te voeren. Hoewel de taak in andere talen, zoals PHP of Ruby, geen probleem is, kun je met JavaScript in eerste instantie alleen omzeilen met tijdelijke oplossingen, waarvan het gebruik wordt bepaald door persoonlijke smaak of browserondersteuning.


De voor de hand liggende poging

var str = "Dies ist eine
mehrzeilige
Zeichenkette.";

mislukt en de parser klaagt over verschillende dingen (in de vorm van onverwachte token ILLEGAL) omdat JavaScript (in tegenstelling tot andere programmeertalen zoals PHP) automatisch een puntkomma invoegt na het einde van elke regel:

var str = "Dies ist eine;
mehrzeilige;
Zeichenkette.";

Een eerste oplossing voor het probleem bestaat uit het eenvoudig samenvoegen van tekenreeksen via de operator \ n en +:

var str = "Dies ist eine\n" +
"mehrzeilige\n" +
"Zeichenkette.";

Als je de voorkeur geeft aan een minder langzame en iets leukere variant, voeg dan aan het einde van elke regel een backslash toe:

var str = "Dies ist eine\n\
mehrzeilige\n\
Zeichenkette";

Als alternatief kunt u ook de join-methode gebruiken en deze downloaden:

var str = ["Dies ist eine",
"mehrzeilige",
"Zeichenkette"].join("\n");

Als, aan de andere kant, je ogen oplichten bij reguliere expressies, gebruik dan de volgende syntaxis (match () filtert de waarden tussen de commentaren):

var str = (function () {/*Dies ist eine
mehrzeilige
Zeichenkette*/}).toString().match(/[^]*\/\*([^]*)\*\/\}$/)[1];

Belangrijk: als de code is verkleind, kan deze oplossing worden vergeten (aangezien de opmerkingen ook worden verwijderd).

De leukste variant lukt met ECMA6 en de hulp van template strings:

var str = `Dies ist eine
mehrzeilige
Zeichenkette`;
Terug