Каковы правила для вызова функций на числовых литералах в 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.
после любой цифры всегда будет десятичное число, а не вызов метода или доступ к свойству.