-->

什么是JavaScript编写多行字符串的最彻底的方法? [重复](What's the

2019-08-20 13:33发布

这个问题已经在这里有一个答案:

  • 在JavaScript创建多串 36分的答案

它并不真正需要添加换行符,只是一些可读性。

什么比这更好的?

str = "line 1" +
      "line 2" +
      "line 3";

Answer 1:

几乎相同NickFitz的回答:

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

所不同的代码稍微更易于维护,因为线可以不考虑逗号在哪里重新排序。 没有语法错误。



Answer 2:

我喜欢这个版本(只是在代码的格式比你的不同):

var str = "line 1"
        + "line 2"
        + "line 3";


Answer 3:

你可以这样做

str = "\
line 1\
line 2\
line 3";

正如在评论中提到的,JavaScript的解析器处理这个罚款(它适用于所有主要的浏览器),但没有正式ECMA脚本语法的一部分。 因此,它可以或可以不与压缩机,错误检查器工作,并且不能保证在浏览器。

这可能是更容易阅读,但不是“最好”的方式做到这一点。 也许ECMA脚本将支持类似于C#的@‘’一天。



Answer 4:

仅供参考。 你认为它的方式是正确的方式比其他的答案更好。 JSLint的仅验证您的版本。



Answer 5:

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

如果你真的想在字符串中换行,然后更换.join("").join("\n") /



Answer 6:

始终如一。

无论您选择哪种方式,这样做完全一样的方式在整个应用程序。 如果你对已有的代码编写的应用程序的工作,接受他们设置了公约,并用它去。



Answer 7:

是! 您可以使用\字符的JavaScript忽略行尾字符 。

str = 'line 1 \
line 2 \
line 3';

然而,随着由Elzo Valugi指出 ,这不会验证使用的JSLint。



Answer 8:

这只会在浏览器中运行E4X的支持 -我希望我们可以在IE中使用它

var str = <><![CDATA[

   Look, a multi-line
   string! < " // ' ? &

]]></>.toString();


Answer 9:

下面是一个使用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着色。 在开发过程中,这是好得多一起工作,以后你总是可以运行在简单地用正则表达式是这句法转换成一个跨浏览器版本。



文章来源: What's the cleanest way to write a multiline string in JavaScript? [duplicate]