Javascript e a "new line" (nova linha)
Isto de tentar continuamente aprender coisas, por vezes leva-nos a bater com a cabeça na parede. Estou a tentar fazer umas coisas em javascript... e hoje lá tive que dar umas cabeçadas. Por fim a parede caiu :)
Hoje tive uma guerra com o "\r" (carriage return) e o "\n" (new line) e também temos a junção dos dois "\r\n" mais habitual em Windows a tentar fazer a concatenação de string com nova linha em javascript. O pretendido até era simples, tendo umas variáveis dinâmicas, pretendia que estes valores ficassem separados por linhas para apresentar numa janela alert()... Simples, não é ?
Numa situação normal em outras linguagens, faria algo como
var mensagem = "Verifique a lista dos produtos a seguir: \n";
for ( i = 0; i < cadeia.length; i++){
mensagem += cadeia[i] + " - " + valor[i] + "\n";
}
alert(mensagem);
//Uncaught SyntaxError: Invalid or unexpected token
Com o código semelhante ao apresentado acima, surgia-me sempre o erro indicado no fim...
Depois de diversas tentativas, com aspas simples, variações no texto e variáveis... o erro persistia...
Ok, tempo de procurar por uma solução... que acabei por encontrar.
Nas cadeias de caracteres em javascript, onde possa haver multilinha e queiramos manter essas linhas ou adicionar programaticamente com "\r", "\n" ou "\r\n" temos que usar...
ACENTO GRAVE como delimitador !!!
Então nestas situações em javascript temos que usar " ` " como delimitador de cadeia de caracteres em javascript. Sendo assim, o código anterior ficaria algo como:
var mensagem = `Verifique a lista dos produtos a seguir: \n`;
for ( i = 0; i < cadeia.length; i++){
mensagem += cadeia[i] + " - " + valor[i] + `\n`;
}
alert(mensagem);
Sendo só necessário nas cadeias onde temos os códigos para nova linha.
Também podíamos ter algo como:
var texto = `esta
é
uma
cadeia
partida`;
Que o compilador javascript não se queixava e apresentaria essa cadeia literalmente como está.
Não é caso para... mas quase :)