HTML注释<! - 在JavaScript中作为单行注释,为什么? - >

时间:2015-03-03 21:50:32

标签: javascript

JavaScript如何理解构造<!--?从JavaScript的角度来看,除了///* */之外还有其他评论吗?

从测试开始,似乎JavaSript将<!--视为//:单行

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

什么都不做,而

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

按预期工作。

这种行为记录在哪里?

这不是其他问题的重复:我不会问为什么,是否或如何使用它。我正式问它在JavaScript中有什么语法和语义。这个问题非常重要,在其他问题中没有得到回答:例如,上面提到的行为无法从其他问题及其答案中猜到(实际上这是我的动机:我的程序如上所述没有单行程工作,这些问题和答案无助于理解原因。

1 个答案:

答案 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代码。

因此,此部分仅用于描述现有的“非官方”行为,并且一旦浏览器停止实现此行为,将从规范中删除。