标签:javascript
The void operator in JavaScript将调用内部GetValue(expr),但总是返回undefined,无论是什么值或表达式.
规范说:
11.4.2 The void Operator
The production UnaryExpression : void UnaryExpression is evaluated as follows:
- Let expr be the result of evaluating UnaryExpression.
- Call
GetValue(expr)
.- Return undefined.
GetValue must be called even though its value is not used because it may have observable side-effects.
我的问题是,为什么?会发生什么样的可观察副作用?我们能否证明void如何改变程序流程,并讨论如果我们没有运行GetValue会发生什么?
解决方法:
如果你正在编写一个没有副作用的程序,那么总是返回undefined的函数没有用,因为它不会将有用的信息返回给调用者.在这种情况下,如果你总是知道你会得到什么,你根本不会调用该函数.
但是,如果一种语言具有“副作用”,即使返回undefined的函数仍然可以在编程上有用. “副作用”是某些效果的技术术语,它不是函数返回值的一部分.作为一个具体的例子,改变DOM是一种不会计算并返回有用值的副作用,但您仍然希望DOM树的状态发生变异.播放声音也是一种副作用.
作为旁注,void可以是有用的,因为在语法上它强制表达式上下文,因此可以明确地表达函数表达式值之类的内容.例如
void function(){alert('hi')}()
标签:javascript 来源: https://codeday.me/bug/20190613/1235088.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。