<p>HTML注释必须用<!-- -->严格闭合,浏览器解析时遇连续两个短横--即终止,中间内容全跳过、不参与DOM构建;禁用--或-->、不可嵌套、不得出现在属性值或<script>/<style>内部。</p>

HTML注释必须用<!--和-->严格闭合
浏览器解析 HTML 时,遇到 <!-- 就进入注释状态,直到下一个连续的 --> 才退出——中间所有内容(包括换行、空格、标签、JS 代码)全被跳过,不参与 DOM 构建。这不是“视觉隐藏”,是真实解析阶段丢弃。
常见错误现象:
-
<!-- 这里--不能有两个短横 -->→ 第一个--出现在中间,导致注释提前结束,后面内容裸露渲染 -
<!-- TODO: enable --debug mode -->→--debug中的--触发截断,“debug mode -->”变成页面可见文本 -
<!--<script>alert(1)</script>-->→ 看似屏蔽脚本,实则只是把整段当纯文本,不影响下载或执行逻辑
注释里不能出现--或紧贴--的>
解析器只认连续两个短横线 -- 作为结束信号,不管它是不是你有意写的分隔符。哪怕写在英文破折号、版本号、命令行参数里,只要字面是 --,就危险。
安全做法:
立即学习“前端免费学习笔记(深入)”;
- 写“前端 —— 从入门到放弃”时,用中文破折号
—(Unicode U+2014),不是英文双短横-- - 需要表达“--enable-logging”,改用 en dash
–(U+2013):<!-- 配置开关: –enable-logging --> - 实在要保留
--,加空格隔开:<!-- -- enable-logging -->(注意前后空格)
<script></script>和<style></style>标签内部不能用<!--注释
现代浏览器(Chrome/Firefox/Safari/Edge)原生支持 <script> 和 <style>,外层套 <!-- 不仅多余,还极易出错。
典型翻车场景:
<script><!-- console.log("-->"); -->→ 解析器在第一个-->就结束注释,后面 JS 字符串里的-->被当成 HTML 结束标记,导致 JS 执行失败-
<style><!-- body { color: red; } --></style>→ CSS 内容被当作文本渲染,样式完全不生效 - 临时屏蔽整个脚本?正确做法是把整块标签包进注释:
<!-- <script>alert(1);</script> --> - 放在
<!DOCTYPE html>前面或紧贴其后换行 → 某些旧版 IE 强制进入怪异模式 - 写在属性值里:
<div title="<!-- 错! -->test">→ 多数浏览器截断属性或解析失败 - 嵌套使用:
<!-- <!-- inner --> outer -->→ 第一个-->就关闭外层,后续结构全乱 - 插在标签开始符内部:
<div
注释位置踩坑:这些地方绝对不能写
注释不是便签纸,插错位置等于删代码。最常误用的几处:



















