在一些旧代码中,我找到了一个包含HTML注释的JavaScript文件。
我理解在旧浏览器中这样做的原因,但不知道它是如何以任何方式有效的。
Chrome和IE控制台中的<!--
表达式为undefined
。
这是一个特殊情况,由仍然在ECMAScript标准中定义并在现代浏览器中工作的解释器(http://javascript.about.com/library/blhtmcmt.htm)处理,或者这些符号的组合是否恰好产生了{{{3}} {{{ 1}}?
我把它看作是&#34;少于非减少&#34;,这似乎没有操作数的荒谬。其中任何一个本身都会返回语法错误。
我明白为什么&#34;使用严格的&#34 ;;是有效的,但什么都不做,但我不能告诉这个代码实际上做了什么。
我可能会过度思考它,但想了解发生了什么
答案 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)。
不应再使用它。