На самом деле не нужно добавлять новые строки, просто что-то читаемое.
Что-нибудь лучше этого?
str = "line 1" +
"line 2" +
"line 3";
На самом деле не нужно добавлять новые строки, просто что-то читаемое.
Что-нибудь лучше этого?
str = "line 1" +
"line 2" +
"line 3";
Почти идентичен ответу NickFitz:
var str = [""
,"line 1"
,"line 2"
,"line 3"
].join("");
// str will contain "line1line2line3"
Разница, код немного более удобен в обслуживании, потому что строки могут быть перенаправлены без учета того, где находятся запятые. Нет синтаксических ошибок.
Мне нравится эта версия (отличная от вашей только в форматировании кода):
var str = "line 1"
+ "line 2"
+ "line 3";
Вы могли бы сделать
str = "\
line 1\
line 2\
line 3";
Как уже упоминалось в комментариях, парсеры javascript обрабатывают это прекрасно (он работает во всех основных браузерах), но официально не является частью синтаксиса ECMA Script. Таким образом, он может работать или не работать с компрессорами, средствами проверки ошибок и не гарантированно работать в браузерах.
Это может быть более читаемым, но это не лучший способ сделать это. Возможно, ECMA Script будет поддерживать что-то вроде С# @"" когда-нибудь.
FYI. То, как вы предлагаете, это правильный путь и лучше, чем другие ответы. JsLint только подтверждает вашу версию.
var str = [
"line 1",
"line 2",
"line 3"
].join("");
// str will contain "line1line2line3"
Если вы действительно хотите использовать символы новой строки в строке, замените .join("")
на .join("\n")
/
Последовательно.
Каким бы способом вы ни выбрали, сделайте это точно так же, как и во всем приложении. Если вы работаете над приложением, которое уже написало код, соглашайтесь с соглашением, которое они задают и идут с ним.
Да! Вы можете использовать символ \, чтобы JavaScript игнорировал символы конца строки.
str = 'line 1 \
line 2 \
line 3';
Однако, поскольку указал Elzo Valugi, это не будет проверяться с использованием JSLint.
Это будет работать только в браузерах с E4X поддержка - я бы хотел, чтобы мы могли использовать его в IE
var str = <><![CDATA[
Look, a multi-line
string! < " // ' ? &
]]></>.toString();
Вот тот, который может быть полезен во время разработки при использовании 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);
}
*/});
Это не работает для Firefox, хотя он работает в Chrome.
Пример использования будет для написания/тестирования webgl-шейдеров. Во время разработки гораздо удобнее работать и позже вы всегда можете запустить это с помощью простого регулярного выражения который преобразует этот синтаксис в кросс-браузерную версию.