Почему LiveScript использует "void 8" для значений undefined?

Я уже давно использую LiveScript, и я заметил, что в ситуациях, когда undefined неявно возвращается, вместо него используется выражение void 8.

Естественно, я понимаю использование void, но я не могу понять, почему именно используется целое число 8.

Например, следующий LiveScript:

x = if truthy then \success!

Скомпилирует для:

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

Ответ 1

Из документации по LiveScript, здесь их аргументы в пользу использования void, а не undefined:

В JavaScript можно переопределить undefined, поэтому разумно использовать void operator, который производит значение undefined, всегда. на верхний уровень (не используется как выражение) не компилируется (для использования как заполнитель) - он должен использоваться как значение для компиляции.

Что касается 8, это произвольное число и может быть установлено любым другим. Согласно обсуждению в комментариях ниже, причиной этого конкретного произвольного числа является то, что LiveScript является вилкой кокоса, чьи вики-отчеты:

void 8 - выбрано число 8, потому что это китайский счастливый номер.

Независимо от того, как разработчики выбрали значение, в широком смысле, это то, что компилирует LiveScript void. Просто должно быть какое-то выражение, оцененное вызовом void.

Ответ 2

Скорее всего, 8 - это любимое число разработчика (или просто случайное число), как и все, что вы положили после оператора void, вы получите чистый, а не переопределенный undefined.

Простой тест:

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