void操作符执行表达式并强制返回undefined,用于忽略结果、规避语法歧义、安全获取undefined值及历史锚点跳转控制。
JavaScript 中的 void 操作符本质是“执行表达式,但强制返回 undefined”。它不改变原表达式的行为,只抹掉它的返回值。这个特性让它在两类场景中特别有用:一是需要明确忽略结果,二是需要规避语法解析歧义。
有些上下文对表达式的返回值敏感,比如赋值、链式调用或某些模块加载器。用 void 可以主动切断返回值传递:

void doSomething() —— 即使 doSomething 返回字符串或对象,整个表达式结果仍是 undefined,不会意外触发跳转或覆盖变量void (x = 10, y = 20) —— 多个语句组合后仍得 undefined,适合做纯副作用操作void import('./module.js') —— 启动异步加载,但不把 Promise 赋给变量,语义更清晰JavaScript 解析器看到 function() {...}() 会先尝试当作函数声明处理,而函数声明不能直接加括号调用,会报语法错误。加上 void 就能强制它走“表达式”路径:
void function() { console.log('run'); }(); ✅ 有效:void 后必须跟表达式,所以整个 function() {...} 被识别为函数表达式function() { ... }(); ❌ 报错:解析器认为这是非法的函数声明语句!function(){...}()、+function(){...}(),但 void 更直白——它不改变逻辑,只强调“我要的是执行,不是结果”在早期 JavaScript 中,undefined 是可被重写的全局变量。虽然现代环境已禁止,但一些压缩工具或兼容性代码仍倾向用 void 0 表示原始的、不可篡改的 undefined:
立即学习“Java免费学习笔记(深入)”;
if (value !== void 0) { ... } —— 比 typeof value !== 'undefined' 更短,比直接写 undefined 更稳妥const DEFAULT = void 0; —— 明确表示“这里就是空值”,无歧义这是 void 最广为人知的历史用法,用于阻止 标签跳转:
javascript:xxx 时,会把执行结果当新页面内容渲染;若结果非 undefined(比如字符串),页面就被替换成那个字符串javascript:void(0) 确保结果恒为 undefined,页面保持不动event.preventDefault() 绑定点击事件,HTML 中保留语义化链接(如 或 ),更可访问、更易维护