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 odpowiedziOdką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.