我一直在寻找一种在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,什么是反恶意?
答案 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")