为什么HTML注释打开阻止有效的JavaScript?

时间:2013-06-14 00:12:18

标签: javascript theory

在一些旧代码中,我找到了一个包含HTML注释的JavaScript文件。

我理解在旧浏览器中这样做的原因,但不知道它是如何以任何方式有效的。

Chrome和IE控制台中的<!--表达式为undefined

这是一个特殊情况,由仍然在ECMAScript标准中定义并在现代浏览器中工作的解释器(http://javascript.about.com/library/blhtmcmt.htm)处理,或者这些符号的组合是否恰好产生了{{{3}} {{{ 1}}?

我把它看作是&#34;少于非减少&#34;,这似乎没有操作数的荒谬。其中任何一个本身都会返回语法错误。

我明白为什么&#34;使用严格的&#34 ;;是有效的,但什么都不做,但我不能告诉这个代码实际上做了什么。

我可能会过度思考它,但想了解发生了什么

2 个答案:

答案 0 :(得分:8)

这是浏览器和JavaScript引擎始终实现的非标准功能。如今,它无法从Web平台中删除,因为这会破坏向后兼容性。这是detailed in the JavaScript / Web ECMAScript spec

  

<!--必须被视为SingleLineComment的开头 -   相当于//

var x = true;
<!-- x = false; // note: no syntax error
x; // true
     

-->在一行的开头,可选地前面有空格或   MultiLineComment s,必须视为SingleLineComment -   相当于//

var x = true;
--> x = false; // note: no syntax error
x; // true

var x = 1;
/*
multiline comment!
x = 2;
*/ --> x = 3;
x; // 1

答案 1 :(得分:4)

<!--开始单线Javascript评论,信不信由你。

这用于允许<script>块通过将所有脚本内容包装在HTML注释中来隐藏自身不能识别<script>标记的浏览器(例如,Netscape 2)。

不应再使用它。