void 是一元运算符,执行右侧表达式但始终返回 undefined;用于丢弃返回值、阻止 a 标签跳转、IIFE 忽略结果、动态导入不取 Promise、安全获取 undefined。

JavaScript 的 void 是一个一元运算符,它的核心行为是:**执行右侧的表达式,但始终返回 undefined**。它不改变表达式本身的逻辑或副作用(比如函数调用、变量修改仍会照常发生),只是“吃掉”结果,强制让整个表达式的值变成 undefined。
主要作用:确保无返回值
void 的本质价值在于“语义明确地丢弃返回值”。它不是阻止代码运行,而是切断表达式结果对外部的影响:
- 避免非
undefined返回值引发意外行为(如页面跳转、控制台输出干扰) - 在需要“只执行、不取值”的上下文中提供安全出口
- 比直接写
undefined更健壮——因为void 0在任何环境下都稳定等于undefined,而全局undefined曾在非严格模式下可被重写
常见使用场景
1. 阻止 a 标签默认跳转(历史用法)
早期常用:点击。点击时执行 void(0),返回 undefined,浏览器不会导航,也不会覆盖当前页面内容。现代更推荐用 event.preventDefault() + 独立事件监听,解耦 HTML 和逻辑。
2. IIFE 中忽略返回值
例如:void function(){ console.log('run'); return 'done'; }(); 整个表达式结果为 undefined,避免在某些链式调用或赋值中误用 IIFE 的返回值。
立即学习“Java免费学习笔记(深入)”;
3. 动态导入时不关心 Promisevoid import('./module.js'); 启动加载,但不把返回的 Promise 赋给变量或参与后续计算,语义上表明“我只要触发,不要结果”。
4. 安全获取 undefined 值
压缩工具或兼容旧环境时,void 0 比 undefined 更可靠;例如:if (val === void 0) { ... }
注意事项
void 是运算符,不是函数,所以括号不是必须的,但强烈建议加:void(0) 比 void 0 更清晰,也避免运算符优先级陷阱(比如 void 4 + 7 实际是 (void 4) + 7,结果为 7,容易误解)。
它不会阻止表达式执行——void alert('hi') 依然会弹窗,只是返回 undefined。











