它实际上不必添加换行符,只是可读的东西。
还有什么比这更好的吗?
str = "line 1" +
"line 2" +
"line 3";
答案 0 :(得分:20)
几乎与NickFitz的答案相同:
var str = [""
,"line 1"
,"line 2"
,"line 3"
].join("");
// str will contain "line1line2line3"
不同之处在于,代码更易于维护,因为可以重新排序行而不考虑逗号的位置。没有语法错误。
答案 1 :(得分:16)
我喜欢这个版本(与您的代码格式化不同):
var str = "line 1"
+ "line 2"
+ "line 3";
答案 2 :(得分:13)
你可以做到
str = "\
line 1\
line 2\
line 3";
正如评论中所提到的,javascript解析器处理这个问题(它适用于所有主流浏览器),但不是ECMA Script语法的正式部分。因此,它可能适用于压缩器,也可能不适用于错误检查器,并且不能保证在浏览器中工作。
这可能更具可读性,但不是“最佳”方式。也许ECMA脚本有一天会支持c#的@“”。
答案 3 :(得分:12)
FYI。 你建议它的方式是正确的方式,比其他答案更好。 JsLint仅验证您的版本。
答案 4 :(得分:10)
var str = [
"line 1",
"line 2",
"line 3"
].join("");
// str will contain "line1line2line3"
如果您确实需要字符串中的换行符,请将.join("")
替换为.join("\n")
/
答案 5 :(得分:6)
始终如一。
无论您选择哪种方式,都要在整个应用程序中以完全相同的方式完成。如果您正在处理已编写代码的应用程序,请接受它们设置的约定并继续使用它。
答案 6 :(得分:2)
是的!你可以use the \ character to have JavaScript ignore end of line characters。
str = 'line 1 \
line 2 \
line 3';
但是,作为pointed out by Elzo Valugi,这不会使用JSLint进行验证。
答案 7 :(得分:2)
这只适用于E4X支持的浏览器 - 我希望我们可以在IE中使用它
var str = <><![CDATA[
Look, a multi-line
string! < " // ' ? &
]]></>.toString();
答案 8 :(得分:1)
这是使用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着色器的示例。 在开发过程中,这可以更好地使用和 以后你可以用一个简单的正则表达式来运行它 将该语法转换为跨浏览器版本。