【问题标题】:Why does LiveScript use 'void 8' for undefined values?为什么 LiveScript 对未定义的值使用“void 8”?
【发布时间】:2014-07-20 13:18:10
【问题描述】:

我使用 LiveScript 已经有一段时间了,我注意到在隐式返回 undefined 的情况下,会使用表达式 void 8

当然,我了解void 的用法,但我不明白为什么要使用整数8

例如,以下 LiveScript:

x = if truthy then \success!

将编译为:

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

【问题讨论】:

  • 稍加想象,void 8 读起来就像“无效”。一定是这样的:P 无论如何,这是您应该直接询问开发人员的问题之一。
  • 我猜这也是大多数人使用void 0的原因。
  • 当我第一次看到这个问题时,我彻底困惑了,因为 LiveScript 是早期 Netscape 构建中 JavaScript 的原始名称,脚本语言首先出现,我想知道到底有人在做什么编写代码对于前 NN4。所以事实证明有一种新的语言,基于 on JavaScript,它的名字叫 LiveScript... 看图。
  • @BoltClock 有时真正的新事物被遗忘了旧事物。
  • 我显示了我的年龄,但对我来说 8 总是一个错误JCL Return Code=8(Error)

标签: javascript void livescript


【解决方案1】:

根据 LiveScript 的文档,这是他们使用 void 而不是 undefined 的原因:

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

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

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

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

【讨论】:

  • 只是想说明原因:这是一个中国幸运数字
  • @Ven:作为一个中国人,可以确认,但这就是这个决定的原因吗?开发者是否有中国背景?
  • @BoltClock gkz(LiveScript 的主要开发者)不是,但 LiveScript 是 coco 的一个分支,其开发者 (satyr) 是日本人。
  • 另见coco wiki
  • @DarkKnight - 很好的发现!我更新了答案以包含此信息,谢谢!
【解决方案2】:

8 很可能是开发人员最喜欢的数字(或只是一个随机数字),因为无论您在 void 运算符后面放置什么,您都会收到纯的,而不是覆盖的 undefined

简单测试:

void 0    === void 8    =>    true
void 'a'  === void 8    =>    true
void true === void 8    =>    true

【讨论】:

    猜你喜欢
    • 2016-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-23
    • 1970-01-01
    • 1970-01-01
    • 2012-04-28
    • 2013-05-21
    相关资源
    最近更新 更多