void运算符

这个空隙运算符计算给定的表达然后返回未定义.

试试看

语法

js公司
void表达式

描述

此运算符允许对产生值的表达式求值到计算结果为的表达式未定义需要。

这个空隙运算符通常仅用于获取未定义基本值,通常使用无效(0)(即相当于无效0). 在这些情况下,全局变量未定义可以使用。

应该注意的是优先级空隙应考虑操作员,并且圆括号可以帮助澄清表达式后面的解析空隙操作员:

js公司
无效2===“2”;//(void 2)===“2”,返回false空隙(2===“2”);//void(2===“2”),返回未定义的

示例

立即调用的函数表达式

当使用即时调用函数表达式,的功能关键字不能位于陈述,因为它将被解析为函数声明,并且在到达表示调用的括号时会生成语法错误-如果函数未命名,如果将函数解析为声明,则会立即出现语法错误。

js公司
函数iife(){console.log(“已执行!”);}(); // 语法错误:意外标记“)”函数(){console.log(“已执行!”);}(); // 语法错误:函数语句需要函数名

为了将函数解析为表达,的功能关键字必须出现在只接受表达式而不接受语句的位置。这可以通过在关键字前面加上一元运算符,它只接受表达式作为操作数。函数调用具有更高的优先而不是一元运算符,因此它将首先执行。其返回值(几乎总是未定义)将传递给一元运算符,然后立即丢弃。

在所有一元运算符中,空隙提供了最佳语义,因为它清楚地表明应该丢弃函数调用的返回值。

js公司
void函数(){console.log(“已执行!”);}();//日志“已执行!”

这比将函数表达式包装在括号中要长一些,这与强制功能要解析为表达式开头而不是语句的关键字。

js公司
(函数(){console.log(“已执行!”);})();

请注意,此技巧仅适用于使用功能关键字。尝试使用空隙运算符避免箭头函数使用括号会导致语法错误。当调用箭头函数表达式时,它们总是需要用括号括起来。

js公司
void()=>{console.log(“liife!”);}();//语法错误:箭头函数参数列表格式错误

JavaScript URI

当浏览器遵循javascript:URI(URI),它计算URI中的代码然后用返回的值替换页面的内容,除非返回值为未定义. The空隙运算符可用于返回未定义例如:

html格式
<a href=“javascript:void(0);”>单击此处不执行任何操作</a><a href=“javascript:void(document.body.style.backgroundColor='green');”>单击此处查看绿色背景</a>

注: javascript:不鼓励使用伪协议其他替代方法,如非侵入式事件处理程序。

不间断箭头函数

箭头函数引入了一种短而无括号的语法,用于返回表达式。如果表达式是一个函数调用,返回值从未定义到其他一些值。

例如,如果做某事()收益在下面的代码中,单击复选框时,复选框将不再标记为选中或未选中(返回从处理程序禁用默认操作)。

js公司
checkbox.onclick=()=>doSomething();

这不太可能是理想的行为!为了安全起见,当不打算使用函数的返回值时,可以将其传递给空隙操作符确保(例如)更改API不会导致箭头函数的行为发生更改。

js公司
checkbox.onclick=()=>void doSomething();

规格

规范
ECMAScript语言规范
#sec-void运算符

浏览器兼容性

BCD表仅在浏览器中加载

另请参见