0

除了明显防止链接被点击(with javascript:void(0);)和undefined在许多javascript预编译语言中定义,比如coffeescript(whereundefined变成void 0)-->这个函数还能void用来做什么?


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

有用的链接:MDN 页面void

4

1 回答 1

5

首先,void是一个操作符,而不是一个函数。无法比您在问题中提供的MDN 链接中给出的解释更清楚地给出您问题的答案:

概括

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

...

用途

此运算符允许将产生副作用的表达式插入到undefined需要计算结果的表达式的位置。

理论用途:

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

var i;
i = 0;       // returns 0
void i = 1;  // returns undefined

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

实际用途:

我们已经知道:

  • 取消小书签中的导航
  • 比较项目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);

您的控制台输出将是:

真的
0
真的
1

JavaScript需要这个操作符吗?可能不是。您可以从自调用匿名函数中获得相同的功能(甚至更多):

(function(){ /* expression */ })()

但这并不那么简洁。

于 2013-01-30T19:20:50.170 回答