javascript - 什么是 javascript 反斜线以及它如何处理多行字符串?

标签 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

最佳答案

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

如果“antislash”是指 \ 字符(通常称为“反斜杠”),它可以用于(至少在符合 the ECMAScript specification 的第 4 版或更高版本的解释器中)将文字字符串继续到下一行。但是当您这样做时,您并没有真正创建“多行字符串”,因为字符串结果中同时省略了反斜杠和换行符。

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")

关于javascript - 什么是 javascript 反斜线以及它如何处理多行字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26279876/

相关文章:

elasticsearch - Logstash多行未将消息分组

javascript - 如何启动我的线上和线下事件

javascript - 带有偏移量的 Canvas createPattern() 和 fill()

javascript - 如何使用 Javascript 访问 Meteor 客户端的模型数据?

c++ - 无法确定为什么函数调用中从 char* 到 char 的无效转换

mysql - 在mysql中将日期时间作为字符串处理

python - 使用 Regex 提取多行 SAS 代码

python - 通过正则表达式获取重复内容

javascript - PHP 电子邮件表单响应当前 html,而不是打开 'thank you' 页面

Ruby:是值列表中的字符串