我使用 LiveScript 已经有一段时间了,我注意到在undefined
隐式返回的情况下,会使用表达式void 8
。
自然,我了解 的用法void
,但我无法弄清楚为什么要专门使用整数8
。
例如,以下 LiveScript:
x = if truthy then \success!
将编译为:
var x;
x = truthy ? 'success!' : void 8;
我使用 LiveScript 已经有一段时间了,我注意到在undefined
隐式返回的情况下,会使用表达式void 8
。
自然,我了解 的用法void
,但我无法弄清楚为什么要专门使用整数8
。
例如,以下 LiveScript:
x = if truthy then \success!
将编译为:
var x;
x = truthy ? 'success!' : void 8;
void
从 LiveScript 的文档中,这是他们使用而不是的理由undefined
:
在 JavaScript 中,undefined 可以重新定义,因此始终谨慎使用产生 undefined 值的 void 运算符。顶层的 void (不用作表达式)编译为空(用作占位符) - 它必须用作编译的值。
至于8
,它是一个任意数字,并且可以设置为任何其他数字。根据下面评论中的讨论,这个特定的任意数字的原因是因为 LiveScript 是 coco 的一个分支,其 wiki 报告:
void 8 - 选择数字 8 是因为它是一个中国幸运数字。
无论开发人员如何选择该值,从广义上讲,这就是 LiveScriptvoid
编译成的内容。调用只需要评估一些表达式void
。
最有可能8
是开发人员最喜欢的数字(或只是一个随机数),因为无论您在void
运算符后面放什么,您都会收到纯的,而不是覆盖undefined
的。
简单测试:
void 0 === void 8 => true
void 'a' === void 8 => true
void true === void 8 => true