我无法理解页面https://developer.mozilla.org/en/JavaScript/Reference/Operators/Special/void中的这一段:
此操作符允许插入 产生副作用的表达式 进入表达的地方 需要评估为undefined。
产生副作用的表达式究竟是什么?
答案 0 :(得分:6)
一个函数通常做两件事:执行某事并返回一个值。有些功能只执行其中一项,有些功能同时执行。例如函数:
function square(x) {
return x * x;
}
副作用是免费的,因为它所做的只是返回一个值,并且它的调用总是可以用它的返回值替换。另一方面,像alert()
这样的东西只会被调用它的副作用(警告用户),而不会被称为返回值。
那么void
运算符的作用是让JavaScript忽略返回值并说明你感兴趣的只是函数的副作用。
答案 1 :(得分:2)
一个简单的例子是函数调用。如果你需要一个“未定义”值,但你也想调用一个函数(比如说)做一些DOM操作,你可以将结果“转换”为void
并得到一个未定义的结果。
我绝对不认为这会出现在语言的“好部分”中,尽管它确实绕过了一个奇怪的事实,即“未定义”并不是一个真正的保留词。表达式void 0
肯定会真的未定义。
答案 2 :(得分:2)
表达式(i+=1)
的计算结果为i+1
,但副作用是将i
递增1。
void
的目的不是掩盖副作用,而是专门针对想要副作用时,但不想要结果表达
答案 3 :(得分:1)
'副作用'是void作为参数的函数的结果。在这种情况下,函数F1返回'false',但是将它包装在'void'中基本上'吞下'那个结果或'副作用':
var F1 = function() { return false; }
void(F1());
请原谅无偿使用引号......哈哈。
答案 4 :(得分:1)
一个例子是:
<a href="javascript:void(**do stuff here**)">link</a>
虚空迫使它什么都不返回。如果没有虚空,潜在的某些返回值将导致链接将用户带离页面。