JavaScript如何理解构造<!--
?从JavaScript的角度来看,除了//
和/* */
之外还有其他评论吗?
从测试开始,似乎JavaSript将<!--
视为//
:单行
<script> <!-- alert('hi') //--> </script>
什么都不做,而
<script> <!--
alert('hi') //--> </script>
按预期工作。
这种行为记录在哪里?
这不是其他问题的重复:我不会问为什么,是否或如何使用它。我正式问它在JavaScript中有什么语法和语义。这个问题非常重要,在其他问题中没有得到回答:例如,上面提到的行为无法从其他问题及其答案中猜到(实际上这是我的动机:我的程序如上所述没有单行程工作,这些问题和答案无助于理解原因。
答案 0 :(得分:9)
从测试开始,似乎JavaSript将
<!--
视为//
一行
是的,正如ES6规范中所指定的那样annex B:
B.1.3类似HTML的评论
Comment :: MultiLineComment SingleLineComment SingleLineHTMLOpenComment SingleLineHTMLCloseComment SingleLineDelimitedComment SingleLineHTMLOpenComment :: <!-- SingleLineCommentCharsopt
但请注意附件B的说明:
本附件描述了基于Web浏览器的ECMAScript实现的各种遗留功能和其他特性。本附录中指定的所有语言功能和行为都具有一个或多个不良特征,并且在没有遗留用法的情况下将从本规范中删除。但是,大量现有网页对这些功能的使用意味着Web浏览器必须继续支持它们。本附件中的规范定义了这些遗留功能的可互操作实现的要求。
这些功能不被视为核心ECMAScript语言的一部分。编写新的ECMAScript代码时,程序员不应使用或假设存在这些特性和行为。不鼓励ECMAScript实现实现这些功能,除非实现是Web浏览器的一部分,或者需要运行与Web浏览器相同的旧ECMAScript代码。
因此,此部分仅用于描述现有的“非官方”行为,并且一旦浏览器停止实现此行为,将从规范中删除。