为什么<! - 返回undefined而不是语法错误? - >

时间:2014-03-11 13:08:30

标签: javascript

html评论标记<!--&amp;当{j}命令运行时-->返回undefined,我预计会出现语法错误。为什么会这样?

我在DoubleClick ... download链接)中偶然发现了这一点。

1 个答案:

答案 0 :(得分:7)

因为<script>作为事后的想法被添加到HTML中,并且当时许多浏览器都不承认脚本的存在,<!--实际上是Javascript语言规范的已定义成员,并且被视为“评论开始”。

请记住,默认情况下,浏览器会忽略他们不理解的标记,以便

<tag_which_does_not_exist>hi there</tag_which_does_not_exist>

实际上会在浏览器中显示“hi there”。对于没有脚本的浏览器,这意味着他们会将JS代码显示为文档中的文本。所以..

<script>
<!--
alert('hi there');
// --> 
</script>

会在支持脚本的浏览器中弹出一个JS警报,并且会被脚本无知的浏览器完全忽略。

另请注意,-->无效Javascript,这就是为什么必须输入// -->//是另一个JS单行注释,它会注释掉其他无效的--> html结束注释标记。