为什么LiveScript对未定义的值使用'void 8'?

时间:2014-05-30 17:34:27

标签: javascript void livescript

我一直在使用LiveScript很长一段时间,而且我注意到在隐式返回undefined的情况下,会使用表达式void 8

当然,我理解使用void,但我无法弄清楚为什么使用整数8

例如,以下LiveScript:

x = if truthy then \success!

将编译为:

var x;
x = truthy ? 'success!' : void 8;

2 个答案:

答案 0 :(得分:5)

从LiveScript文档中可以看出,使用void而不是undefined的原因是:

  

在JavaScript中,undefined可以重新定义,因此谨慎使用   void运算符,它始终生成未定义的值。无效的   顶级(不用作表达式)编译为空(用作   占位符) - 它必须用作编译值。

至于8,它是一个任意数字,可以设置为任何其他数字。根据下面评论中的讨论,这个特定任意数字的原因是因为LiveScript是coco的分支,whose wiki reports

  

void 8 - 选择了8号因为它是中国的幸运数字。

无论开发人员如何选择价值,从广义上讲,它只是LiveScript void编译的内容。只需要通过void调用评估一些表达式。

答案 1 :(得分:3)

最有可能8是开发人员最喜欢的号码(或者只是一个随机数),就像你在void运算符之后放置的那样,你将获得纯粹的,而不是被覆盖的{{1 }}

简单测试:

undefined