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 值。

笔记加载中…