gpt4 book ai didi

javascript - HTML 属性反斜杠何时转义为 JavaScript 字符串?

转载 作者:行者123 更新时间:2023-12-01 00:37:47 25 4
gpt4 key购买 nike

我注意到,当我在下面的代码中使用 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
<div id="test" class="\A" data-b="\B"></div>

<小时/>

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

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

但是,在 specification ,好像没有应用相应的流程。

<小时/>

问题

getAttributes()的哪个过程中,HTML属性的反斜杠被转义(\ -> \\)?

最佳答案

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

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

关于javascript - HTML 属性反斜杠何时转义为 JavaScript 字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57961820/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com