为什么要转义?

linong
  • 19.5k
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script type="text/javascript">
        document.write('<script type="text/javascript" src="http://static0.tuicool.com/assets/font-awesome.min.css?'+Math.random()+'"><\/script>');
    </script>
</head>
<body>
    
</body>
</html>

上面这个代码为什么要转义?'"></script>'这个位置

回复
阅读 2.6k
2 个回答

首先,授人以鱼不如授人以渔。

我先来说说"鱼" -> 解释:

clipboard.png

可能书写者认为斜杠需要转义,否则将会出错(不能组成string)
但是ECMA5里面明确说了反斜杠(backslash)不可以,但是没有对斜杠做要求.
证明如下:

clipboard.png

但是为什么加了反斜杠也可以运行呢?
因为反斜杠是转义符号.

其次我再说说"渔":
其实这个问题我一开始也不明白是为什么,那我是怎么解决问题的呢(当然正确性仍然有待探讨)?
因为凡是JavaScript相关的基础知识,一般在官方手册里面都能很好的寻找到解释。
"官方手册"地址:
    http://ecma-international.org...
然后我就ctrl+F搜索"backslash"这个单词,然后就找到了。。。
当然你可以看目录找相关内容,不过都需要花费一些时间,耐心是最重要的。
然后,
没有然后了.

-----------------------update-----------------------

更新
抱歉,之前说的不对,我的场景存在问题。
总之,先看代码:

clipboard.png

代码作者添加转义符号,是为了防止JS引擎把页面内嵌的语句中的

</script>

当成是script标签的结束.不过最好不要把JS写在html内,所以我的写法是:

clipboard.png

就没有出现你所说的错误了.
打完收工.

<script>里的内容不能出现</script>,会被认为是结束符,所以一定要显示的话,就要转义

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
你知道吗?

宣传栏