JavaScript 中的 void 运算符 http://ecma262-5.com/ELS5_Section_11.htm#Section_11.4.2将调用内部GetValue(expr)
,但总是返回undefined
,无论值或表达式是什么。
规范说:
11.4.2 void 运算符
生产一元表达式 : void 一元表达式评价如下:
- 令 expr 为评估结果一元表达式.
- Call
GetValue(expr)
.
- 返回未定义。
即使不使用 GetValue 的值,也必须调用它,因为它可能会产生明显的副作用。
我的问题是,为什么?可能会发生哪些可观察到的副作用?我们能否演示 void 如何改变程序流程,并讨论如果我们不运行会发生什么GetValue
?
如果您正在编写一个没有副作用的程序,那么始终返回未定义的函数没有任何帮助,因为它不会将有用的信息返回给调用者。在这种情况下,如果您总是知道会返回什么,那么您最好根本不调用该函数。
然而,如果一种语言有“副作用”,即使函数返回未定义,在编程上仍然是有用的。 “副作用”是一个技术术语,指的是不属于函数返回值一部分的某些效果。举一个具体的例子,改变 DOM 是一种副作用,不会计算并返回有用的值,但您仍然希望 DOM 树的状态发生改变。播放声音也是一个副作用。
作为旁注,void可能很有用,因为从语法上讲,它强制使用表达式上下文,以便可以明确地表达函数表达式值之类的内容。例如
void function(){alert('hi')}()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)