是纯语义化标签,仅标注变量名,不存储值、不绑定JS变量;其内容需用textContent获取字符串,不能直接当作JS变量使用。

<var></var> 标签不是变量容器,它不存储值、不参与计算、也不绑定 JavaScript 变量;它只是语义化标记,用来「说明这里出现的是一个变量名」——比如数学公式里的 a、x,或代码示例里的 count、userInput。
为什么写了 <var id="x">x</var> 却拿不到数值?
因为 <var></var> 是纯内容标注标签,和 <span></span> 一样只影响语义与默认样式(UA 默认设为 font-style: italic),不创建运行时变量。以下操作全无效:
-
document.getElementById('x').value→undefined(<var></var>没有value属性) -
console.log(x)→ReferenceError(HTML 标签不会自动声明 JS 变量) -
<var data-value="42">x</var>不会生成全局变量x = 42
若需 JS 交互,必须显式读取文本内容:document.querySelector('var').textContent,得到的也只是字符串 "x",不是数值。
<var></var> 和 <code>、<pre class="brush:php;toolbar:false;"></pre> 怎么配合用才合理?
单独用 <var></var> 很弱,真正起作用是在技术文档中嵌套在语义正确的上下文里:
把任意文章或文档内容转换成精美的全屏翻页 HTML 演示文件(幻灯片风格)。当用户发来一篇文章、文档链接、Markdown 内容、或粘贴的文本,并且希望生成演示用的 HTML 时触发。支持任意内容来源:iWiki 链接、KM 链接、本地文件路径、直接粘贴的文本。生成的 HTML 文件保存到本地工作区,并通过企微直接发送给用户。触发词示例:帮我把这篇文章做成PPT、转成演示文档、生成HTML幻灯片、做个演示、转成可以演示的格式、article to deck、make a slide。
立即学习“前端免费学习笔记(深入)”;
- 数学公式:用
<p><var>a</var>² + <var>b</var>² = <var>c</var>²</p>,配合<sup></sup>显式上标 - 代码示例:把
<var></var>放进<code>块内,如<code>const <var>timeout</var> = 5000;,此时<var></var>仅高亮变量名,不破坏代码结构 - 避免嵌套错误:不要写
<var><code>x—— 语义冲突,<code>已表示代码片段,再套<var></var>多余
IE8 及更老浏览器里 <var></var> 会怎样?
IE ≤ 8 不识别 <var></var>,当作未知 inline 元素处理:无默认样式、无法被 CSS 选中(除非用 document.createElement('var') 在 JS 中“注册”)、屏幕阅读器也忽略其语义。若需兼容:
- 不强依赖语义:用
<span class="var"></span>替代,并统一加.var { font-style: italic; } - 必须用原生
<var></var>时,加 HTML5 shiv 脚本(仅对 IE9- 有效,IE8 及以下仍不支持语义) - 注意:现代项目基本可忽略 IE8,但若文档要长期归档或交付给政府/教育机构系统,得提前确认 UA 要求
最容易被忽略的一点:即使你用了 <var></var>,如果 CSS 重置了所有斜体(比如全局 * { font-style: normal !important; }),那它的语义提示就彻底消失了——这时必须手动加类或属性选择器恢复样式,否则跟普通 <span></span> 没区别。


















