Jakie są zasady wywoływania funkcji na literałach liczbowych w JS? [duplikować]

To pytanie ma już tutaj odpowiedź:

Dlaczego nie mogę uzyskać dostępu do właściwości liczby całkowitej z pojedynczą kropką? 4 odpowiedzi

Odkąd zacząłem pracować z JS, myślałem, że jedynym sposobem wywołania funkcji na literale numerycznym jest umieszczenie jej w pozycji wyrażenia poprzez zawinięcie jej w parens, tak:

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

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

Dzisiaj przyszło mi do głowy, aby spróbować tego:

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

Dlaczego to działa? Wskaźnik do oficjalnej specyfikacji byłby świetny.

Edytować Dwuznaczność była moją pierwszą myślą, ale potem zdecydowałem, że nie ma w niej dwuznaczności1.toString() zarówno. Jest głębszy niż początkowo myślałem, ale nadal uważam, że mam rację. Dlatego:

Nazwy nieruchomościmogą zacznij od cyfr

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

Nazwy właściwości zaczynające się od cyfr można odwoływać się tylko do nawiasów kwadratowych

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

Również:

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

W związku z tym,1. po nim dowolna cyfra będzie zawsze wywołaniem metody lub dostępem do nieruchomości, nigdy liczbą dziesiętną. Również,1. po którejkolwiek cyfrze zawsze będzie liczba dziesiętna, nigdy wywołanie metody lub dostęp do właściwości.

questionAnswers(1)

yourAnswerToTheQuestion