Pergunta

Esta pergunta já tem uma resposta aqui:

Realmente não precisa adicionar novas linhas, apenas algo legível.

Algo melhor do que isso?

str = "line 1" +
      "line 2" +
      "line 3";
Foi útil?

Solução

Quase idêntico à resposta de Nickfitz:

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

A diferença, o código é um pouco mais sustentável porque as linhas podem ser reordenadas sem levar em consideração onde estão as vírgulas. Sem erros de sintaxe.

Outras dicas

Eu gosto desta versão (diferente da sua apenas na formatação do código):

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

Você poderia fazer

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

Como mencionado nos comentários, os analisadores JavaScript lidam com essa multa (funciona em todos os principais navegadores), mas não faz parte oficialmente da sintaxe do script da ECMA. Como tal, pode ou não funcionar com compressores, verificadores de erro e não é garantido que funcione em navegadores.

Isso pode ser mais legível, mas não é a maneira "melhor" de fazê -lo. Talvez o script da ECMA apoie algo como C#'S @"" algum dia.

PARA SUA INFORMAÇÃO. A maneira como você sugere é a maneira correta e melhor que as outras respostas. JSLINT valida apenas sua versão.

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

Se você realmente deseja novas linhas na string, substitua .join("") com .join("\n")/

Consistentemente.

Qualquer que seja a maneira que você escolher, faça -o exatamente da mesma maneira durante todo o seu aplicativo. Se você está trabalhando em um aplicativo que já possui código escrito, aceite a convenção que eles definiram e acompanhem.

Sim! Você pode Use o caractere para que JavaScript ignore os caracteres de ponta de linha.

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

No entanto, como apontado por Elzo Valugi, isso não validará usando o JSLINT.

Isso só funcionará em navegadores com E4x Apoio, suporte - Eu gostaria que pudéssemos usá -lo no IE

var str = <><![CDATA[

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

]]></>.toString();

Aqui está um que pode ser útil durante o desenvolvimento ao usar o 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);
}
*/});

Isso não funciona para Raposa de fogo, embora funcione no Chrome.

O uso de exemplo seria para escrever/testar shaders WebGL. Durante o desenvolvimento, isso é muito mais agradável para trabalhar e, mais tarde, você sempre pode executar isso com um regexp simples que converte essa sintaxe em uma versão do navegador.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top