我在处理客户提供代码的项目时偶尔会看到这一点:
<script src="xx" type="xx">//</script>
我总是想知道这是否是正确的语法 它至少不会打扰任何浏览器。但它很糟糕地混淆了编辑器的语法高亮显示,因为它在注释时没有识别结束标记。
另一种味道是:
<script>
//some code
//</script>
我只知道这个是为了防止代码泄漏到页面中:
<script>
//<!--
//some code
//-->
</script>
我绝对不知道其他人想要阻止什么。
答案 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不好。
自那以后很多时候很可能被货物抄袭了。