Frage

Diese Frage hat hier bereits eine Antwort:

Es muss nicht wirklich Newlines hinzufügen, nur etwas Lesbares.

Etwas besser als das?

str = "line 1" +
      "line 2" +
      "line 3";
War es hilfreich?

Lösung

Fast identisch mit NickFitzs Antwort:

var str = [""
    ,"line 1"
    ,"line 2"
    ,"line 3"
].join("");
// str will contain "line1line2line3"

Der Unterschied, der Code ist etwas aufrechterhalten, da die Zeilen ohne Rücksicht auf die Kommas neu bestellt werden können. Keine Syntaxfehler.

Andere Tipps

Ich mag diese Version (anders als Ihre, nur in Formatierung des Codes):

var str = "line 1"
        + "line 2"
        + "line 3";

Du könntest es tun

str = "\
line 1\
line 2\
line 3";

Wie in den Kommentaren erwähnt, handhaben JavaScript -Parser mit dieser Geldstrafe (es funktioniert in allen wichtigen Browsern), ist jedoch nicht offiziell Teil der ECMA -Skriptsyntax. Daher kann es mit Kompressoren, Fehlerprüfern funktionieren oder auch nicht und nicht garantiert in Browsern.

Dies mag lesbarer sein, ist aber nicht die beste Art, dies zu tun. Vielleicht unterstützt das ECMA -Skript eines Tages so etwas wie C# @"".

Zu Ihrer Information. Die Art und Weise, wie Sie es vorschlagen, ist der richtige und bessere Weg als die anderen Antworten. JSlint Validiert nur Ihre Version.

var str = [
    "line 1",
    "line 2",
    "line 3"
].join("");
// str will contain "line1line2line3"

Wenn Sie tatsächlich Newlines in der Zeichenfolge wünschen, ersetzen Sie .join("") mit .join("\n")/

Konsequent.

Unabhängig davon, wie Sie es wählen, tun Sie es in Ihrer Anwendung genauso. Wenn Sie an einer Anwendung arbeiten, in der bereits Code geschrieben wurde, akzeptieren Sie die von ihnen festgelegte Konvention und machen Sie sich damit ein.

Ja! Du kannst Verwenden Sie das Zeichen, um JavaScript das Ende der Zeilenzeichen zu ignorieren.

str = 'line 1 \
line 2 \
line 3';

Allerdings da von Elzo Valugi hervorgehoben, Dies wird nicht mit JSINT überprüft.

Dies funktioniert nur in Browsern mit E4X Unterstützung - Ich wünschte, wir könnten es in IE verwenden

var str = <><![CDATA[

   Look, a multi-line
   string! < " // ' ? &

]]></>.toString();

Hier ist eine, die bei der Verwendung von Chrome bei der Entwicklung hilfreich sein kann.

function FSTR(f) {
    // remove up to comment start and trailing spaces and one newline
    s = f.toString().replace(/^.*\/\* *\r?\n/,"");
    // remove the trailing */} with preceeding spaces and newline
    s = s.replace(/\n *\*\/\s*\}\s*$/,"")
    return s;
}

s = FSTR(function(){/*
uniform vec2 resolution;
uniform float time;

void main(void)
{
    vec2 p = -1.0 + 2.0 * gl_FragCoord.xy / resolution.xy;
    vec2 cc = vec2( cos(.25*time), sin(.25*time*1.423) );
    ...
    float color = sqrt(sqrt(dmin))*0.7;
    gl_FragColor = vec4(color,color,color,1.0);
}
*/});

Dies funktioniert nicht für Feuerfuchs, obwohl es in Chrome funktioniert.

Beispiel für das Schreiben/Testen von WebGL -Shadern. Während der Entwicklung ist dies viel schöner zu arbeiten, und später können Sie dies jederzeit mit einem einfachen Regexp durchlaufen, der diese Syntax in eine Cross-Browser-Version umwandelt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top