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

HTML属性反斜杠何时作为JavaScript字符串转义?,javascript,html,Javascript,Html,我注意到,当我在下面的代码中使用JavaScript获取“包含反斜杠的属性值”时,反斜杠被转义 console.log(document.getElementById(“test”).getAttribute(“class”);//->\A. console.log(document.getElementById(“test”).getAttribute(“class”).replace(“\\A”,“\A”);//->A. console.log(document.getElementByI

我注意到,当我在下面的代码中使用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

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

由于标准的根不同,HTML在黑斜杠上不需要相同的转义。属性不会“转换”为带有转义反斜杠的属性,除非将其格式化为字符串文字。这将发生在字符串与其可见输出之间的某个阶段。您可以使用alert()而不是console.log()来查看字符串的真实情况。我认为,特别是对于控制台
目标是对开发人员的帮助大于对内部的准确帮助。

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

由于标准的根不同,HTML在黑斜杠上不需要相同的转义。属性不会“转换”为带有转义反斜杠的属性,除非将其格式化为字符串文字。这将发生在字符串与其可见输出之间的某个阶段。您可以使用alert()而不是console.log()来查看字符串的真实情况。我认为,特别是对于控制台
目标是对开发人员的帮助大于对内部的准确帮助。

替换中的
'\A'
只是一个
'A'
,因为……原因。要在字符串文字中表示一个反斜杠,需要键入两个反斜杠。因此,将“A”替换为反斜杠,将“A”替换为不带反斜杠的“A”。@deceze要在字符串文字中表示一个反斜杠,需要键入两个反斜杠。>这正是JavaScript中发生的事情。但是,我不知道JavaScript中的反斜杠表示何时应用于属性值。
replace
中的
'\A'
只是一个
'A'
,因为……原因。要在字符串文字中表示一个反斜杠,需要键入两个反斜杠。因此,将“A”替换为反斜杠,将“A”替换为不带反斜杠的“A”。@deceze要在字符串文字中表示一个反斜杠,需要键入两个反斜杠。>这正是JavaScript中发生的事情。但是,我不知道JavaScript中的反斜杠表示何时应用于属性值。。。。除非格式化为字符串文字>为什么在“返回字符串的函数,例如
getAttribute
方法”中的“字符串文字”中不出现反斜杠转义?
getAttribute
方法所做的是返回一个字符串。但是,您可以检查此返回值是否以各种方式转义,而不是
控制台
警报
。返回字符串的函数(通常)不返回文本。文字是用来解释的代码。attrib的字符串内容并不意味着(或需要)被解释。。。。除非格式化为字符串文字>为什么在“返回字符串的函数,例如
getAttribute
方法”中的“字符串文字”中不出现反斜杠转义?
getAttribute
方法所做的是返回一个字符串。但是,您可以检查此返回值是否以各种方式转义,而不是
控制台
警报
。返回字符串的函数(通常)不返回文本。文字是用来解释的代码。attrib的字符串内容并不意味着(或需要)被解释。