什么是javascript反斜杠以及它如何与多行字符串一起使用?

时间:2014-10-09 13:36:15

标签: javascript string multiline

我一直在寻找一种在javascript中执行多行字符串的方法。我使用过这段代码:

var str = <><![CDATA[
This string spans multiple lines
Doesn't need quoting of single quotes
And the same goes for "double quotes".
Because of the CDATA, I can also include some <b>html</b>
Which can make use of <attributes with="double quotes"/> but at the same
time, I can make use of the > and < signs without worrying about
xml validity.
]]></>;

在Visual Studio 2012中使用这段代码时,我会收到错误行。另外,我从来没有在Javascript或HTML中使用过CDATA,所以我不确定这应该如何工作。

那么,1,这个代码(有一些调整)可以工作吗? 2,什么是反恶意?

Source 1

Source 2

1 个答案:

答案 0 :(得分:2)

您发布的代码无效Javascript。如果您的脚本嵌入在X [HT] ML文档中,CDATA技巧可能会起作用,但我怀疑它仍然不会,因为它会在Javascript解释器看到它之前转换为文字换行符。在任何情况下,包含未转义的换行符的字符串文字都是语法错误。

如果通过&#34; antislash&#34;你的意思是\字符(通常称为&#34;反斜杠&#34;),它可以被使用(至少在符合the ECMAScript specification的第4版或更高版本的解释器中)来继续文字字符串到下一行。但是当你这样做时,你并没有真正创建一个&#34;多行字符串&#34;,因为字符串结果中都省略了反斜杠和换行符。

var s = "abc \
         123"
console.log(s)  //= abc 123

(为了清晰起见,我在上面缩进,但是如果你这样做,结果是依赖于实现的 - 一些JS解释器在LineContinuation之后压缩额外的空格,而其他人没有。)

Javascript中的常用解决方案是使用显式换行符和连接:

var z = "abc\n" +
        "123"
console.log(z)   //=  abc
                 //   123

或许这样的事情(这就是你的意思,@ torazaburo?):

[
    "abc",
    "123",
    "third line",
    "another line"
].join("\n")