除了未定义之外,用于javascript的void函数的用例

Nea*_*eal 0 javascript void

除了明显阻止链接被点击(和javascript:void(0);)和undefined许多javascript预编译语言的定义,如coffeescript(在哪里undefined成为void 0) - >该void功能还可用于什么?


相关:"javascript:void(0)"是什么意思?

实用链接:MDN页面void

gil*_*ly3 5

首先,void是一个操作员,而不是一个功能.您的问题的答案不能比您在问题中提供的MDN链接中给出的解释更清楚:

摘要

void运算符计算给定表达式,然后返回undefined.

...

用途

此运算符允许将产生副作用的表达式插入到undefined需要求值的表达式的位置.

理论用途:

更改产生副作用的表达式的返回值.

var i;
i = 0;       // returns 0
void i = 1;  // returns undefined
Run Code Online (Sandbox Code Playgroud)

但在大多数情况下,这种用途并不是很有价值.

实际用途:

我们已经知道:

  • 取消书签中的导航
  • 比较项目undefined- 由于undefined可以修改全局变量(它不是保留字),void 0因此获取undefined值是一种更可靠的方法.例如:obj.foo === void 0

其他用途:

防止详细的控制台输出 - 当我只想执行一些代码并且不想用无趣的详细输出污染控制台时,我在JavaScript控制台中使用它.

显式传递undefined给函数 - 知道是否在没有传递参数的情况下调用函数,或者是否将参数传递给值为的函数是有用的undefined:

function countArguments(a) {
    console.log(a === undefined);
    console.log(arguments.length);
}
countArguments();
countArguments(void 0);
Run Code Online (Sandbox Code Playgroud)

您的控制台输出将是:

true
0
true
1

JavaScript 需要这个运算符吗?可能不是.您可以从自动调用匿名函数中获得相同的功能(以及更多):

(function(){ /* expression */ })()
Run Code Online (Sandbox Code Playgroud)

但这并不简洁.

  • @Neal`break`和`continue`是陈述.大多数操作符都是一元或二元的,我从来没有听说过nullary运算符. (2认同)