javascript 字符串不能包含尖括号吗?

var html = \"<script></script>\";

这行总是报错,把第二个<去掉就不报错了。为什么呢?尖括号不需要转义的啊??

DeepinScrot-5252.png

相关文章

11 thoughts on “javascript 字符串不能包含尖括号吗?

  1. 不是 JavaScript 的问题,而是 XML 的问题
    不是不能包含尖括号,而是 </script> 闭合了 <script>

    = =

    你这个代码被解析后就是

    <script>… ‘ … </script>

    </script>

    当然是不行了… 需要转义为 <\/script>

  2. 5 楼和 7 楼是正解。
    HTML 引擎和 JS 引擎是两个独立的引擎,HTML 源码会由 HTML 引擎优先解析,解析到 script 标签的时候,HTML 引擎会把<script>和后面第一个遇到的</scriipt>字符串之间的字符串交给 JS 引擎来解析。
    虽然你的</script>在 JS 的字符串值内部,但对于 HTML 引擎来说,它并不认识 JS 代码,它就只是憨憨地在<script>后面找第一个遇到的</script>字符串。这样的话你的代码里,截取<script>到第一个</script>字符串之间的不是一段有效的 JS 代码,而之外的也不是有效的 HTML 代码。

    举例:
    源代码是:

    <script>
    html='<script></script>’
    </script>

    HTML 引擎交给 JS 引擎解析的是:

    html='<script>

    上面 JS 字符串缺失后面的引号,所以不是合法的 JS,HTML 留下的代码是:


    </script>

    首先第一行留下一个残缺的单引号,所以 HTML 就认为这是一段 text,就直接输出这个单引号字符;同时因为在</script>之前没有与之配对的<script>起始标签,所以后面这个闭合标签是不合法的 HTML 。

发表评论

电子邮件地址不会被公开。 必填项已用*标注