<p>HTML注释仅<!-- -->合法,位置错误、含--或>、嵌套均致解析提前终止,引发注释失效、DOM错乱或白屏;现代浏览器无需<script>内注释,属性值中注释极危险,且注释是真实DOM节点影响性能。</p>

HTML 注释只有 <!-- --> 这一种合法形式,写错位置、混入 -- 或 >、嵌套使用,都会导致解析提前终止,轻则注释失效,重则 DOM 结构错乱、页面白屏。
为什么 <!-- 里不能出现 --
HTML 解析器只要在 <!-- 后看到连续两个短横线 --,就会立刻结束注释——不管后面有没有 -->。这不是高亮问题,是真实解析行为。
-
<!-- 配置开关: --enable-logging -->→ 解析器在--处就收口,后面enable-logging -->变成裸文本,可能被渲染出来 - 中文破折号
—(U+2014)或 en dash–(U+2013)是安全的,它们不是 ASCII 短横线,不会触发闭合 - 真要写英文双短横,可用实体编码替代:
–(en dash)或—(em dash)
<script></script> 和 <style></style> 标签里要不要加 HTML 注释
完全不需要。老式写法如 <script><!-- ... //--></script> 是为兼容 Netscape 2 / IE3 设计的,现代所有浏览器(Chrome、Firefox、Safari、Edge)都原生支持 <script></script> 和 <style></style>,加 HTML 注释反而容易出事。
-
<script><!-- console.log("test"); --></script>→<!--开始注释,但没闭合,JS 引擎会报Uncaught SyntaxError: Unexpected token '(' - JS 逻辑必须用
//或/* */;CSS 规则必须用/* */;HTML 注释对它们完全无效 - 想临时屏蔽整个脚本块?用
<!-- <script>...</script> -->,即把整个标签包裹在 HTML 注释里
编辑器快捷键(如 Ctrl+/)为什么有时会“写坏”注释
VS Code、WebStorm 等工具的 Ctrl+/ 默认按行添加 <!-- 和 -->,适合单行注释,但选中多行后直接触发,会生成一堆断裂或嵌套结构,极易踩坑。
立即学习“前端免费学习笔记(深入)”;
- 选中三行代码后按
Ctrl+/,结果变成:<!-- <div> --><!-- <p> --><!-- </div> -->→ 中间--><!--形成非法组合,解析器在第一个-->就停,后续全乱 - 正确做法:手动输入
<!--+ 换行 + 代码 + 换行 +-->;或用编辑器的“包围代码”功能(如 VS Code 的Ctrl+Shift+P→ “Embrace with Comment”) - 确认当前文件语言模式是
HTML,否则快捷键可能走成 JS 或 CSS 注释逻辑
注释出现在属性值或标签内部会怎样
语法上不禁止,但绝大多数浏览器会解析失败或截断,属于“看似能写,实则危险”的区域。
-
<div class="<!-- 注释 -->box">→ 属性值里的<!--会让解析器进入注释状态,直到遇到-->,中间若没闭合,整个属性甚至标签都会被吞掉 -
<!-- <div id="main"> -->是合法的,但<div id="<!-- test -->main">不是 - 注释应紧邻所说明的代码块上下方,不要塞进标签内部、属性里,或紧跟在
前面
最常被忽略的是:注释不是“随便写点文字”,它会成为 DOM 中真实的 Comment 节点(node.nodeType === 8),大量无意义注释会影响 document.querySelectorAll('*') 这类遍历性能,服务端渲染时也会增加传输体积——别把它当调试草稿纸用。



















