注释掉<script>结束标记。语法好不好?</script>

时间:2012-06-07 05:22:18

标签: javascript html syntax

我在处理客户提供代码的项目时偶尔会看到这一点:

<script src="xx" type="xx">//</script>

我总是想知道这是否是正确的语法 它至少不会打扰任何浏览器。但它很糟糕地混淆了编辑器的语法高亮显示,因为它在注释时没有识别结束标记。

另一种味道是:

<script>
  //some code
//</script>

我只知道这个是为了防止代码泄漏到页面中:

<script>
 //<!--
 //some code
 //-->
</script>

我绝对不知道其他人想要阻止什么。

4 个答案:

答案 0 :(得分:3)

编写<script src="xx" type="xx">//</script>是正式的正确语法,因为解析了HTML文档,将//视为数据,然后丢弃此数据,因为该元素具有src属性。它当然也符合JavaScript语法,构成一个空程序,带有空注释。

//没有任何用处。一个非空的评论是否有用是值得商榷的; HTML5草案表明它可以,见Inline documentation for external script那里。

使用//</script>正式无误但无用。

语法高亮显示器搞砸了它有一个错误(它没有被编程为正确解析script元素。)

您提到的“防止代码泄漏到页面中”的构造,在脚本代码中包含<!---->,比无用的代码更糟糕。它们没用,因为没有人再使用Netscape 1了。它们比无用更糟糕,因为人们在尝试使用它们时会输入错误(并且由于XHTML规则,类似注释的构造注释,可能会被浏览器删除)。此外,你提到的具体结构甚至不会在Netscape 1上做到这一点;它会使字符“//”出现在页面内容中。

答案 1 :(得分:1)

这仍然是一个有效的JavaScript行。 这是一个空白的评论。

//</script>

因此浏览器不会有任何问题。 如果您的语法高亮显示器无法识别它,那就是语法高亮显示器的错误。

是的,我同意如果代码最后没有空白的评论会更容易阅读。

答案 2 :(得分:1)

没关系,因为双斜杠会注释JavaScript代码。由于脚本是HTML标记,因此不会产生任何影响。

答案 3 :(得分:0)

猜测,我怀疑<script ...>//</script>最初是在从XML生成HTML页面时完成的,其中//提供了一些空的但具体的内容来阻止XML序列化程序将脚本标记折叠到一个自动结束标记<script ... />,它是OK XML但HTML不好。

自那以后很多时候很可能被货物抄袭了。