Question

    

Cette question a déjà une réponse ici:

         

Il n'a pas vraiment d'ajouter des nouvelles lignes, juste quelque chose lisible.

Quelque chose de mieux que cela?

str = "line 1" +
      "line 2" +
      "line 3";
Était-ce utile?

La solution

Presque identique à la réponse de NickFitz:

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

La différence, le code est un peu plus maintenable car les lignes peuvent être commandés sans égard à l'endroit où les virgules sont. Aucune erreur de syntaxe.

Autres conseils

J'aime cette version (différente de la vôtre juste au formatage du code):

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

Vous pouvez faire

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

Comme mentionné dans les commentaires, javascript parseurs gérer ce bien (cela fonctionne dans tous les principaux navigateurs), mais ne sont pas officiellement partie de la syntaxe ECMA Script. En tant que tel, il peut ou peut ne pas fonctionner avec des compresseurs, correcteurs d'erreur, et ne pas fonctionner dans les navigateurs.

Cela peut être plus facile à lire, mais pas la « meilleure » façon de le faire. Peut-être que script ECMA soutiendra quelque chose comme c # 's @ "" un jour.

Pour votre information. La façon dont vous proposez est la bonne façon et mieux que les autres réponses. JSLint seulement valide votre version.

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

Si vous voulez réellement dans les nouvelles lignes de la chaîne, puis remplacez .join("") avec .join("\n") /

Constamment.

Quelle que soit la façon dont vous choisissez, faire exactement de la même manière tout au long de votre application. Si vous travaillez sur une application qui a déjà code écrit, accepter la convention, ils fixés et aller avec elle.

Oui! Vous pouvez utiliser la \ caractère d'avoir JavaScript ignorer caractères de fin de ligne .

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

Cependant, comme a par Elzo Valugi , ce ne sera pas validé en utilisant JSLint.

Ceci ne fonctionne que dans les navigateurs avec E4X soutien - Je souhaite que nous pourrions l'utiliser dans IE

var str = <><![CDATA[

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

]]></>.toString();

Voici qui peut être utile au cours du développement lors de l'utilisation Chrome.

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);
}
*/});

Cela ne fonctionne pas pour Firefox , bien que cela fonctionne dans Chrome.

Exemple d'utilisation serait pour l'écriture / tests Shaders WebGL. Au cours du développement ce qui est beaucoup plus agréable de travailler avec et plus tard, vous pouvez toujours courir sur ce avec une simple expression rationnelle qui convertit cette syntaxe dans une version cross-browser.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top