Почему я не могу получить доступ к свойству целого числа с одной точкой?
Если я попытаюсь написать
3.toFixed(5)
есть синтаксическая ошибка. Использование двойных точек, помещение в пространство, размещение трех в круглых скобках или использование заметок в скобках позволяет ему работать правильно.
3..toFixed(5)
3 .toFixed(5)
(3).toFixed(5)
3["toFixed"](5)
Почему не используется одноточечная нотация и какой из этих альтернатив я должен использовать вместо этого?
Ответы
Ответ 1
Период является частью числа, поэтому код будет интерпретироваться так же, как:
(3.)toFixed(5)
Это, естественно, даст синтаксическую ошибку, так как вы не можете сразу следовать номеру с идентификатором.
Любой метод, позволяющий интерпретировать этот период как часть числа, будет работать. Я думаю, что самый ясный способ заключить круглые скобки вокруг числа:
(3).toFixed(5)
Ответ 2
Вы не можете получить к нему доступ из-за недостатка в токенизаторе JavaScript. Javascript пытается проанализировать точечную нотацию на число как литерал с плавающей запятой, поэтому вы не можете следовать ему с помощью свойства или метода:
2.toString(); // raises SyntaxError
Как вы уже упоминали, существует несколько обходных решений, которые можно использовать для того, чтобы числовые литералы также выступали в качестве объектов. Любой из них в равной степени действителен.
2..toString(); // the second point is correctly recognized
2 .toString(); // note the space left to the dot
(2).toString(); // 2 is evaluated first
Чтобы узнать больше об использовании и свойствах объектов, просмотрите Javascript Garden.
Ответ 3
Это не работает, потому что JavaScript интерпретирует 3.
как начало константы с плавающей запятой (например, 3.5
), или всю константу с плавающей запятой (с 3. == 3.0
), поэтому вы не может следовать за ним идентификатором (в вашем случае - именем свойства). Он не понимает, что вы хотели бы, чтобы 3
и .
были двумя отдельными токенами.
Любое из ваших обходных решений отлично подходит для меня.