首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >何时将HTML属性反斜杠作为JavaScript字符串转义?

何时将HTML属性反斜杠作为JavaScript字符串转义?
EN

Stack Overflow用户
提问于 2019-09-16 17:35:03
回答 1查看 497关注 0票数 0

我注意到,当我在下面的代码中使用JavaScript获得“属性值(包括反斜杠)”时,反斜杠是转义的。

代码语言:javascript
复制
console.log(document.getElementById("test").getAttribute("class")); // -> \A
console.log(document.getElementById("test").getAttribute("class").replace("\\A", "\A")); // -> A

console.log(document.getElementById("test").dataset.b); // -> \B
console.log(document.getElementById("test").dataset.b.replace("\\B", "\B")); // -> B
代码语言:javascript
复制
<div id="test" class="\A" data-b="\B"></div>

反斜杠在JavaScript中被视为一个特殊字符,两个反斜杠(\\)表示一个反斜杠(\)。

上述代码的结果意味着,当使用JavaScript使用getAttribute()获取属性值时,一个反斜杠(\)在某个地方转义到两个反斜杠(\\)。

然而,在规格说明中,似乎没有应用相应的进程。

问题

getAttributes()属性的反斜杠是在哪个进程中转义的(\ -> \\)?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-16 17:47:07

字符串文本(需要转义)和其他地方的字符串值(如html、ajax等)之间有区别,这就是它们的样子。只有当转换为文字(例如: JSON.stringify、一些控制台视图等)时,JS字符串才会有反斜杠转义。转义是一个输出格式化工件;在内部,字符序列中没有转义。

由于标准的根不同,HTML不需要在黑斜杠上进行相同的转义。除非将属性格式化为字符串文本,否则属性不会“转换”为带有转义反斜杠的属性。这将发生在字符串和它的可见输出之间的一个阶段。您可以使用警告()而不是console.log()来查看字符串的真实情况。我相信,对于控制台来说,目标是对开发人员更有帮助,而不是对内部的精确性。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57961820

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档