Domanda

    

Questa domanda ha già una risposta qui:

         

Non deve davvero aggiungere nuove righe, solo qualcosa leggibile.

qualcosa di meglio di questo?

str = "line 1" +
      "line 2" +
      "line 3";
È stato utile?

Soluzione

Quasi identico alla risposta di NickFitz:

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

La differenza, il codice è leggermente più gestibile perché le linee possono essere riordinate senza riguardo a dove le virgole sono. Non ci sono errori di sintassi.

Altri suggerimenti

mi piace questa versione (diversa dalla vostra solo nella formattazione del codice):

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

Si potrebbe fare

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

Come già detto nei commenti, javascript parser gestire questo fine (opera in tutti i principali browser), ma non è ufficialmente parte della sintassi ECMA Script. Come tale, può o non può funzionare con i compressori, dama di errore, e non è garantito il funzionamento nei browser.

Questo può essere più leggibile, ma non è il modo 'migliore' per farlo. Forse lo script ECMA sosterrà qualcosa come C # 's @ "" un giorno.

FYI. Il modo in cui si suggeriscono che è il modo corretto e migliore rispetto alle altre risposte. JSLint convalida solo la versione.

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

Se si desidera veramente a capo nella stringa, quindi sostituire .join("") con .join("\n") /

In coerenza.

In qualsiasi modo si sceglie, farlo esattamente allo stesso modo in tutta l'applicazione. Se si sta lavorando su un'applicazione che ha già scritto il codice, accettare la convenzione si misero e andare con esso.

Sì! Puoi utilizzare il \ personaggio ad avere JavaScript ignorare caratteri di fine linea .

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

Tuttavia, come sottolineato da Elzo valugi , questo non convaliderà utilizzando JSLint.

Questo funziona solo nei browser con E4X supporto - Vorrei che potessimo usarlo in IE

var str = <><![CDATA[

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

]]></>.toString();

Ecco uno che può essere utile durante lo sviluppo quando si utilizza 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);
}
*/});

Questo non funziona per Firefox , anche se funziona in Chrome.

utilizzo esempio potrebbe essere per la scrittura / testing shaders WebGL. Durante lo sviluppo è molto più bello da lavorare e poi si può sempre correre su questo con una semplice espressione regolare che converte che la sintassi in una versione cross-browser.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top