它实际上并不需要添加换行符,只是一些可读的东西。
还有什么比这更好的吗?
str = "line 1" +
"line 2" +
"line 3";
它实际上并不需要添加换行符,只是一些可读的东西。
还有什么比这更好的吗?
str = "line 1" +
"line 2" +
"line 3";
几乎与尼克菲茨的回答相同:
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 脚本语法的正式一部分。因此,它可能会也可能不会与压缩器、错误检查器一起使用,并且不能保证在浏览器中也能正常使用。
这可能更具可读性,但不是“最好”的方式。也许 ECMA 脚本有一天会支持像 c# 的 @"" 这样的东西。
供参考。您建议的方式是正确的方式,并且比其他答案更好。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 着色器。在开发过程中,使用起来会更好,以后您总是可以使用简单的正则表达式来运行它,该正则表达式将该语法转换为跨浏览器版本。