The void operator in JavaScript将调用内部GetValue(expr),但始终返回undefined,无论值或表达式是什么。

规格说明:



我的问题是,为什么?会发生什么样的可观察到的副作用?我们能否说明void如何改变程序流程,并讨论如果不运行GetValue会发生什么情况?

最佳答案

如果您编写的程序没有副作用,那么始终返回未定义的函数将无济于事,因为它不会将有用的信息返回给调用者。在这种情况下,如果您始终知道要返回的内容,则可能根本不调用该函数。

但是,如果一种语言具有“副作用”,那么即使返回未定义的函数在编程上也仍然有用。 “副作用”是某些效应的技术术语,不是函数返回值的一部分。举一个具体的例子,对DOM进行更改是一种副作用,它不会计算并返回有用的值,但是您仍然希望DOM树的状态发生更改。播放声音也是一种副作用。

附带说明一下,void很有用,因为从语法上讲,它强制使用表达式上下文,以便可以明确表示函数表达式值之类的东西。例如

void function(){alert('hi')}()

10-05 20:38
查看更多