注释掉<脚本>结束标记.语法确定与否
Commenting out <script> closing tag. Syntax OK or not?
在处理客户提供代码的项目时,我偶尔会看到这种情况:
<script src="xx" type="xx">//</script>
我一直想知道这是否是一种正确的语法。
它至少不会打扰任何浏览器。但是它非常严重地搞砸了我的编辑器的语法突出显示器,因为它在注释掉时无法识别结束标签。
另一种口味是:
<script>
//some code
//</script>
我只知道这个可以防止代码泄漏到页面中:
<script>
//<!--
//some code
//-->
</script>
而且我绝对不知道其他人想要阻止什么。
编写 <script src="xx" type="xx">//</script>
是形式上正确的语法,因为 HTML 文档被解析,//
被视为数据,然后这些数据被丢弃,因为元素具有 src
属性。当然,它也符合JavaScript语法,构成一个空程序,带有空注释。
但是,//
没有任何用处。非空评论是否有用是值得商榷的;HTML5 草案建议它可以,请参阅那里的外部脚本的内联文档。
使用//</script>
在形式上是正确的,但毫无用处。
一个搞砸了的语法高亮笔有一个错误(它没有被编程为正确解析script
元素)。
像你提到的"防止代码泄漏到页面中"的构造,在脚本代码中具有<!--
和-->
,比无用的代码更糟糕。它们是无用的,因为没有人再使用Netscape 1了。它们比无用更糟糕,因为人们在尝试使用它们时会犯打字错误(并且因为根据 XHTML 规则,类似注释的结构是一个注释,可能会被浏览器删除)。此外,您提到的特定结构甚至不会在 Netscape 1 上起作用;它将使字符"//"出现在页面内容中。
这仍然是一个有效的 javascript 行。这是一个空白的评论。
//</script>
因此,浏览器不会遇到任何问题。如果您的语法突出显示器无法识别它,则这是语法突出显示器的错误。
是的,我同意如果代码最后没有空白注释,阅读起来会容易得多。
没关系,因为双斜杠注释了 JavaScript 代码。由于脚本是 HTML 标记,因此不会有任何影响。
猜测,我怀疑<script ...>//</script>
最初是在从 XML 生成 HTML 页面时完成的,其中//
提供了一些空但具体的内容来阻止 XML 序列化程序将脚本标签折叠成自闭合标签<script ... />
这是正常的 XML 但糟糕的 HTML。
从那以后,它很可能被货物崇拜复制了很多次。
- 为什么“;未定义的“;在JavaScript中结束循环
- 铬:“;未捕获的语法错误:意外的标记:"
- 循环结束/推送到数组之前在页面上呈现EJS
- jQuery语法添加了var
- Javascript未捕获语法错误意外的标识符错误
- 未捕获的语法错误:输入JavaScript意外结束
- 未捕获语法异常:第1行输入意外结束
- 节点.js未定义:1 [语法错误:输入意外结束]
- Ajax 调用返回语法错误:输入意外结束
- 注释掉<脚本>结束标记.语法确定与否
- 谷歌浏览器:语法错误:输入意外结束
- 语法错误:JSON.parse:意外的数据结束
- 未捕获的语法错误:输入时刻意外结束.min.js:7
- Jquery/Javascript未捕获语法错误:意外的输入结束
- 未捕获语法错误:输入意外结束
- 未捕获的语法错误:输入意外结束-Javascript错误
- 语法错误:输入parseJSON的意外结束
- jQuery未捕获语法错误:输入的意外结束
- 语法错误:输入的意外结束(jQuery)
- 调试:第126行:语法错误意外结束