为什么Javascript中的void需要参数?

为什么Javascript中的void需要参数?,javascript,void,Javascript,Void,据我所知,Javascript中的关键字void是一种函数,它接受一个参数并总是返回未定义的值。出于某种原因,你需要通过一个论点;没有它是不行的 有什么理由需要这个论点吗 重点是什么?为什么没有争论就不行呢。我看到的唯一用法是生成未定义的结果。它还有其他用途吗 如果没有,那么对要传递的表达式的要求似乎是毫无意义的。根据本页,void是一个运算符,它在计算传递给它的表达式后,只返回未定义的。运算符需要操作数才能对其进行操作。这就是为什么要传递一个参数 console.log(void true);

据我所知,Javascript中的关键字
void
是一种函数,它接受一个参数并总是返回
未定义的值。出于某种原因,你需要通过一个论点;没有它是不行的

有什么理由需要这个论点吗

重点是什么?为什么没有争论就不行呢。我看到的唯一用法是生成
未定义的结果。它还有其他用途吗

如果没有,那么对要传递的表达式的要求似乎是毫无意义的。

根据本页,void是一个运算符,它在计算传递给它的表达式后,只返回
未定义的
。运算符需要操作数才能对其进行操作。这就是为什么要传递一个参数

console.log(void true);
console.log(void 0);
console.log(void "Welcome");
console.log(void(true));
console.log(void(0));
console.log(void("Welcome"));
所有这些语句都将打印
未定义的

var a = 1, b = 2;
void(a = a + b)
console.log(a);
这将打印
3
。很明显,它会计算我们传递给它的表达式

编辑:我从这个答案中学到

undefined
只是一个可以写入的全局属性。比如说,

console.log(undefined);
var undefined = 1;
console.log(undefined);
它打印

undefined
1

因此,如果要绝对确保使用
undefined
,可以使用
void
操作符。由于它是一个运算符,因此不能在javascript中重写。

void
还计算传递给它的表达式。它不仅返回
undefined

,括号中的表达式在传递到void之前不会被求值。我可以写a=1,b=2;数学最小值(a=a+b,2);表达式将在传递之前进行求值。@UltimateGobblement它确实是这样做的。与其他运营商不同,它不做任何其他事情。只需计算表达式并返回
未定义的
@UltimateGobblement请检查我的答案我的现在。我已经为
void
添加了另一个用例。您正在解释void的功能以及为什么要使用它,但这从来不是我的问题。我相信我的答案的第一段已经回答了最初的问题
void
是一个运算符,与
+
-
等类似,只是它是一元运算符。因为它是一个操作员,它需要一个操作员来操作。这就是我们传递参数的原因。我们传递什么并不重要,它总是返回
未定义的
。我仍然不明白计算表达式的意义是什么?你能举个例子说明它的用途吗?@UltimateGobblement在MDN上有一个例子。请参阅有关JavaScript URI的部分。从技术上讲,这是不正确的。void不计算任何值-表达式的计算首先发生,其结果将被赋予void,与所有其他一元运算符(typeof、instanceof)的结果相同。这样做的原因似乎是技术性的-JS有一元运算符(一个参数-类型a,a++…)和二元运算符(a+b),但没有空运算符(如果不接受arg,则为void)。更多信息:我认为(“1.让ref是计算MemberExpression的结果。”)只是一个短语。功能描述(“)上有相同的措辞,但你不会说参数表达式在被传递到函数之前是经过计算的吗?@UltimateGobblemon如果表达式有副作用,它们将被执行。好问题,还有一个好答案:我只是略读了一下,但我看不到一篇特别回答我问题的帖子。我错过了什么吗?你很聪明好的,先生。试试看,或者下注,但不要点击:“为什么要取消0,特别是?为什么要使用void 0?0有什么特别之处?难道我们不能简单地使用1、42、1000000或“你好,世界!”?答案是,是的,我们可以,它也会起作用。传递0而不是其他参数的唯一好处是0很短且惯用。