Почему "бесконечность", "нуль", "NaN" и "undefined" имеют непоследовательный корпус?

В JavaScript языковые конструкции "Infinity", "null", "NaN" и "undefined" имеют непоследовательный корпус.

Является ли это историческим, или есть намерение позади этого?

Ответ 1

Я думаю, что причины:

  • В ECMAScript типы начинаются с прописных букв:

    Undefined, Null, Boolean, Number, String, Symbol, Object

  • Undefined, а Null - два типа, которые имеют только одно значение, имеющее то же имя, что и тип. Но было бы слишком сложно, если бы случай был одинаковым, поэтому они использовали строчные буквы:

    undefined, null

  • NaN имеет этот корпус, потому что это значение IEEE 754-2008 "Не-номер"

    Не-номер ⟶ NaN

  • Infinity может начинаться с верхнего регистра, потому что нет типа под названием Infinity. Я предполагаю, что это также может начаться с нижнего регистра, но, возможно, им нужно что-то похожее на NaN (?)

Ответ 2

Никто не знает.: - (


(Исходный ответ следует)

Чистая спекуляция, но & hellip;

  • null и undefined - это - это ключевое слово JavaScript s, отражающее различную метатеку "не значение". Все ключевые слова, о которых я знаю, являются строчными буквами (c.f. true, false);
  • undefined - глобальное свойство, представляющее еще больше метаупаков;
  • Infinity и NaN - глобальные свойства, отражающие значения дознавателя с плавающей запятой IEEE, и идут прямо (ish) из этой спецификации третьей стороны.

Итак, я могу понять, почему здесь могут участвовать различные условные условные обозначения: яблоки и апельсины.

На мой взгляд, реальный вопрос в том, почему последние два не являются Math.INFINITY и Math.NAN.