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