JavaScript void
void 是什么
void 是 JavaScript 的一个一元运算符:先对后面的表达式求值,然后总是返回 undefined,无论表达式本身算出什么。它常见于旧代码的链接写法,以及需要"稳定得到 undefined"的场景。
基本语法与表现
写法为 void 后跟表达式,也可以加括号:
console.log(void 0); // 输出:undefined
console.log(void (1 + 1)); // 输出:undefined(表达式仍会先计算)
console.log(void "abc"); // 输出:undefined
用途一:在 href 中阻止页面跳转
早期网页常用 <a> 当按钮,href 设为 "javascript:void(0)",点击时执行空操作,页面既不跳转也不刷新:
<a href="javascript:void(0)" onclick="alert('你好')">点我弹窗</a>
效果:点击只弹出提示框,地址栏 URL 不变、页面也不滚动。相比 href="#"(点击会跳到页面顶部),void(0) 更干净。
用途二:稳定地得到 undefined
理论上 undefined 在很老的浏览器中可以被重新赋值,而 void 0 永远返回真正的 undefined,很多库用它做判断:
var x;
if (x === void 0) {
console.log("x 未赋值"); // 输出:x 未赋值
}
用途三:执行表达式但不影响页面
需要执行一段代码、又不想让返回值进入地址栏时,也可以用它,例如给链接绑定"执行函数":
<a href="javascript:void(showTime())">查看当前时间</a>
点击后运行 showTime(),链接本身不发生任何跳转。
注意事项与现状
现代开发已不推荐使用 javascript: 伪协议,改用 <button> 元素、或者给 <a> 的 onclick 返回 false 更符合语义。void 如今最常见的出场方式仍然是 javascript:void(0),以及把 void 0 当作 undefined 的替身写进代码判断里。
小结
void 运算符对表达式求值后固定返回 undefined;实用场景主要有两个:写 javascript:void(0) 阻止链接跳转,以及用 void 0 获得稳定、不受干扰的 undefined 值。