JavaScript和字符串中的正斜杠

12
在JavaScript字符串中需要转义正斜杠的真正原因是什么?另外,为什么在XHTML中必须转义字符串/非字符串?许多教程都只是简单地提到这个问题。
3个回答

15
为什么在JavaScript字符串中必须转义正斜杠的真正原因是什么?
在HTML 4文档中,序列“</”在被定义为包含CDATA(例如脚本)的元素内部是一个结束标签,并将结束该元素(如果它不是“</script>”,则会出现错误)。
就JS而言,在字符串中,“/”和“\/”是相同的。但是在HTML中,“</”表示开始一个结束标签,而“<\/”则没有起到这个作用。
另外,为什么必须在XHTML中转义字符串或非字符串?
XHTML没有提供指定元素内部本质包含CDATA的方法,因此您需要显式地处理那些本来具有特殊含义的字符(例如“<”、“&”等)。在元素内容周围添加CDATA标记是实现此目的最简单的方法。

所以我们永远不需要转义单个正斜杠,只需要转义</?无论它是在字符串内部还是字符串外部的XHTML?谢谢 :-) - rubixibuc
换句话说,在XHTML中,我们什么时候必须转义正斜杠? - rubixibuc
在“正常”的XHTML(没有人使用),从不。在兼容HTML的XHTML中(每个想要支持IE 8及以下版本的人都使用),与HTML中相同的位置。 - Quentin
所以,@rubixibuc,简而言之,并明确一下:“所以我们永远不需要转义单个正斜杠,只需要转义</?”是的。 - Sz.

3
在 JavaScript 字符串中,您不需要转义 /,只需要转义 \,因为如果不这样做,那么字符串 yes\no 将无意中被转换为 yes<newline>o。转义 \ 将防止这种情况发生。
此外,如果在 URL 中不转义 &,那么后面的内容将被视为新参数。例如,a=Q&A 的含义是“参数 a 的值为“Q”,还有一个参数 A”,而不是“参数 a 的值为“Q&A”。正确的转义方式应该是 a=Q%26A

你为什么要在提示中写 yes\no - Paŭlo Ebermann
@Paŭlo,你可能不会这样做,这是我能想到的意外使用的最好例子。 - rid

0

需要使用斜杠来防止浏览器,特别是旧版本的浏览器,错误地将正斜杠解释为关闭JavaScript标记。


4
这句话的含义是没有错误。 - Quentin
@Quentin,当然,这是错误的。在字符串模式下,解释器的特殊字符只是普通字符... - Bozhidar Stoyneff

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接