Συμβολοσειρές πολλαπλών γραμμών σε JavaScript

Κατά τον προγραμματισμό με JavaScript κάποιος σκοντάφτει συχνά για την αδυναμία πραγματοποίησης συμβολοσειρών πολλαπλών γραμμών εισάγοντάς τις σε πολλές γραμμές στον κώδικα. Ενώ η εργασία σε άλλες γλώσσες όπως η PHP ή το Ruby δεν είναι πρόβλημα, με το JavaScript μπορείτε αρχικά να κάνετε μόνο με εναλλακτικές λύσεις, η χρήση των οποίων αποφασίζεται από προσωπικό γούστο ή υποστήριξη προγράμματος περιήγησης.


Η προφανής προσπάθεια

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

αποτυγχάνει και ο αναλυτής παραπονιέται για πολλά πράγματα (με τη μορφή απροσδόκητου διακριτικού ILLEGAL) επειδή η JavaScript (σε αντίθεση με άλλες γλώσσες προγραμματισμού όπως η PHP) εισάγει αυτόματα ένα ερωτηματικό μετά το τέλος κάθε γραμμής:

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

Μια πρώτη λύση στο πρόβλημα συνίσταται στην απλή συνένωση συμβολοσειρών μέσω του τελεστή \ n και +:

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

Εάν προτιμάτε μια λιγότερο αργή και ελαφρώς καλύτερη παραλλαγή, προσθέστε μια ανάστροφη κάθετο στο τέλος κάθε γραμμής:

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

Εναλλακτικά, μπορείτε να χρησιμοποιήσετε τη μέθοδο σύνδεσης και να την αποκτήσετε:

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

Εάν, από την άλλη πλευρά, τα μάτια σας φωτίζονται με κανονικές εκφράσεις, χρησιμοποιήστε την ακόλουθη σύνταξη (match () φιλτράρει τις τιμές μεταξύ των σχολίων):

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

Σημαντικό: Εάν ο κωδικός ελαχιστοποιηθεί, αυτή η λύση μπορεί να ξεχαστεί (καθώς τα σχόλια αφαιρούνται επίσης).

Η καλύτερη παραλλαγή πετυχαίνει με το ECMA6 και τη βοήθεια των συμβολοσειρών προτύπων:

var str = `Dies ist eine
mehrzeilige
Zeichenkette`;
Πίσω