在JavaScript中编写多行字符串最简洁的方法是什么?

Rob*_*cks 34 javascript string maintainability readability

它实际上不必添加新行,只是可读的东西.

有什么比这更好的?

str = "line 1" +
      "line 2" +
      "line 3";
Run Code Online (Sandbox Code Playgroud)

dre*_*mac 21

几乎与NickFitz的答案相同:

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

差异,代码稍微更易于维护,因为可以重新排序行而不考虑逗号的位置.没有语法错误.


Ion*_*tan 16

我喜欢这个版本(与你的代码格式化不同):

var str = "line 1"
        + "line 2"
        + "line 3";
Run Code Online (Sandbox Code Playgroud)

  • 您必须转义HTML,构造字符串的方式与验证无关. (2认同)

Gor*_*ker 13

你可以做到

str = "\
line 1\
line 2\
line 3";
Run Code Online (Sandbox Code Playgroud)

正如评论中所提到的,javascript解析器处理得很好(它适用于所有主流浏览器),但不是ECMA Script语法的正式部分.因此,它可能适用于压缩器,也可能不适用于错误检查器,并且不能保证在浏览器中工作.

这可能更具可读性,但不是"最佳"方式.也许ECMA脚本有一天会支持c#的@"".

  • 可读但不正确的js错误解析器! (2认同)

Elz*_*ugi 12

仅供参考.你建议的方式是正确的方式,比其他答案更好.JsLint仅验证您的版本.

  • 提示:保持这些线条短.如果它们伸展屏幕,你就看不到+而且它变得不可读.或者像在Ionut建议的那样把线放在线的开头. (7认同)

Nic*_*itz 10

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

如果你真的想在字符串中换行,那么.join("").join("\n")/ 替换

  • 我们有一个脚本通过"str"+"str"构建整个页面,它很慢(大约30秒页面加载).我们改为使用像这样的基于数组的附加系统,它下降到不到一秒钟.所以,是的,它更快:) (2认同)

Dea*_*n J 6

始终如一.

无论您选择哪种方式,在整个应用程序中都以完全相同的方式完成.如果您正在处理已编写代码的应用程序,请接受它们设置的约定并继续使用它.