Каковы правила для вызова функций на числовых литералах в JS? [Дубликат]

This question already has an answer here:

Why can't I access a property of an integer with a single dot? 4 answers

Поскольку я начал работать с JS, я думал, что единственный способ вызвать функцию для числового литерала - это поместить ее в положение выражения, заключив ее в скобки, например, так:

<code>1.toString();
// SyntaxError: identifier starts immediately after numeric literal

(1).toString();
// "1"
</code>

Сегодня мне пришло в голову попробовать это:

<code>0.1.toString();
// "0.1"
</code>

Почему это работает? Указатель на официальную спецификацию был бы великолепен.

Edit Неоднозначность была моей первой мыслью, но потом решил, что нет никакой двусмысленности в1.toString() или. Это глубже, чем я думал, но я все еще думаю, что я прав. Вот почему:

Property names can begin with digits

<code>var obj = { "1" : 1, "2" : 2 };
</code>

Property names that begin with digits can only be referenced with square brackets

<code>obj.1;
// SyntaxError: Unexpected token ILLEGAL
obj['1'];
// 1
</code>

Также:

<code>1['toString']();
// '1'
</code>

Следовательно,1. после любого нецифрового всегда будет вызов метода или доступ к свойству, а не десятичное число. Точно так же,1. после любой цифры всегда будет десятичное число, а не вызов метода или доступ к свойству.

Ответы на вопрос(1)

Ваш ответ на вопрос