<var>标签仅用于语义化标记变量名,不存储值、不执行计算、不绑定JS数据;适用于数学符号、命令行占位符、API参数名等指代“名字”的场景,不可用于数值、按键、错误信息等非命名内容。

var标签不是用来存值或运行的
<var> 标签不声明变量、不绑定 JS 数据、不参与任何计算。写了 <var>x</var>,浏览器不会把它当 JavaScript 变量处理,document.querySelector('var') 能拿到元素,但里面没有“值”可取——它只是个语义容器。
常见错误现象包括:<var id="count">x</var> 以为能用 document.getElementById('count') 读出变量内容;或者把 <var>5000</var> 当作数值用,其实那只是个字符串“5000”,和 <span>5000</span> 没本质区别。
什么时候必须用 var:变量名本身要被标记
核心判断标准:你写的这段文字,是在指代「某个东西的名字」,而不是那个东西的值或行为。
- 数学公式中出现的符号:
<p><var>a</var><sup>2</sup> + <var>b</var><sup>2</sup> = <var>c</var><sup>2</sup></p> - 命令行语法里的占位符:
<p>运行 <code>cp </code><var>source</var><code> </code><var>destination</var></p> - API 文档中的参数名:
<p>调用 <code>fetch(</code><var>url</var><code>)</code></p> - 配置项名称:
<p>设置环境变量 <var>DATABASE_URL</var></p>
var 和 code、kbd、samp 容易混用的边界
<var> 不是代码片段,也不是用户输入,更不是程序输出——它只负责说清“这是个名字”。一旦越界,语义就错乱了。
立即学习“前端免费学习笔记(深入)”;
- 写
<code>console.log(</code><var>msg</var><code>)</code>是对的;写<code>console.log(<var>msg</var>)</code>是错的(<var>不该嵌在<code>里) -
<var>Ctrl</var>错——按键组合该用<kbd>Ctrl</kbd> -
<var>Error: ENOENT</var>错——错误信息该用<samp>Error: ENOENT</samp> -
<var>128</var>错——数字字面量不是变量名,直接写或套<code>128</code>
样式和无障碍的实际影响比你想象得更实在
默认 <var> 渲染为斜体,但这只是浏览器默认 CSS:var { font-style: italic; }。你可以覆盖它,比如 var { color: #2980b9; font-style: normal; },但别为了“好看”硬加 <var>——屏幕阅读器会播报 “variable b”,而不是 “italic letter b”,这对理解公式结构很关键。
容易被忽略的一点:SVG 或 MathML 公式里已有原生变量支持(如 <mi>b</mi>),此时再套一层 <var> 反而干扰解析,属于语义叠加污染。



















