Movatterモバイル変換


[0]ホーム

URL:


  1. 面向开发者的 Web 技术
  2. JavaScript
  3. JavaScript 参考
  4. 表达式和运算符
  5. void 运算符

此页面由社区从英文翻译而来。了解更多并加入 MDN Web Docs 社区。

View in EnglishAlways switch to English

void 运算符

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since ⁨2015年7月⁩.

void 运算符对给定的表达式进行求值,然后返回undefined

尝试一下

const output = void 1;console.log(output);// Expected output: undefinedvoid console.log("expression evaluated");// Expected output: "expression evaluated"void (function iife() {  console.log("iife is executed");})();// Expected output: "iife is executed"void function test() {  console.log("test function executed");};try {  test();} catch (e) {  console.log("test function is not defined");  // Expected output: "test function is not defined"}

语法

js
void expression

描述

这个运算符允许在表达式执行完成时,产生(某些地方)期望获得的undefined 值。

void 运算符通常只用于获取undefined 的原始值,一般使用void(0)(等同于void 0)。在上述情况中,也可以使用全局变量undefined 来代替。

需要注意考虑void 运算符的优先级,以下加括号的表达式的例子可以帮助你清楚地理解void 操作符的优先级:

js
void 2 === "2"; // (void 2) === '2',返回 falsevoid (2 === "2"); // void (2 === '2'),返回 undefined

示例

立即调用的函数表达式

在使用立即调用的函数表达式时,function 关键字不可直接位于语句开头,因为该表达式会被解析为函数声明,并会在解析到代表调用的括号时产生语法错误。如果是匿名函数,那么如果函数被解析为声明,就会立即产生语法错误。

js
function iife() {  console.log("Executed!");}(); // SyntaxError: Unexpected token ')'function () {  console.log("Executed!");}(); // SyntaxError: Function statements require a function name

为了使函数被解析为表达式function 关键字必须出现在一个只接受表达式而不是语句的位置。这可以通过在关键字前加一个一元运算符来实现,它只接受表达式作为操作数。函数调用的优先级比一元运算符高,所以它将被首先执行。它的返回值(几乎总是undefined)将被传递给一元运算符,然后立即被丢弃。

在所有的一元运算符中,void 提供了最好的语义,因为它明确表示函数调用的返回值应该被丢弃。

js
void (function () {  console.log("Executed!");})();// Output: "Executed!"

这比用圆括号包裹函数表达式要长一些,圆括号的作用是强迫function 关键字被解析为表达式的开始,而不是语句。

js
(function () {  console.log("Executed!");})();

JavaScript URI

当用户点击一个以#"/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/undefined">undefinedvoid 运算符可用于返回undefined。例如:

html
<a href="#"> 这个链接点击之后不会做任何事情 </a><a href="#">  点击这个链接会让页面背景变成绿色。</a>

备注:利用#"在箭头函数中避免泄漏" >

在箭头函数中避免泄漏

箭头函数标准中,允许在函数体不使用括号来直接返回值。如果右侧调用了一个原本没有返回值的函数,其返回值改变后,则会导致非预期的副作用。安全起见,当函数返回值不会被使用到的时候,应该使用void 运算符,来确保 API 改变时,并不会改变箭头函数的行为。

js
button.onclick = () => void doSomething();

这确保了当doSomething 的返回值从undefined 变为true 的时候,不会改变代码的行为。

规范

Specification
ECMAScript® 2026 Language Specification
# sec-void-operator

浏览器兼容性

参见

Help improve MDN

Learn how to contribute

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2025 Movatter.jp