Почему 10..toString () работает, а 10.toString () - нет?
8169 просмотра
3 ответа
Возможное дублирование:
использование toString в JavaScript
152..toString(2)
правильно создает двоичную строку "10011000", но
152.toString(2)
бросает исключение
«SyntaxError: идентификатор начинается сразу после числового литерала»
Почему? Последний синтаксис на самом деле звучит более правильно, в то время как первый выглядит очень странно!
Автор: Andre Meinhold Источник Размещён: 12.11.2019 09:54Ответы (3)
100 плюса
А .
после числа может показаться неоднозначным. Это десятичный оператор или оператор члена объекта?
Однако интерпретатор решает, что это десятичное число, поэтому вам не хватает оператора-члена.
Это выглядит так:
(10.)toString(); // invalid syntax
Когда вы включаете второе .
, у вас есть десятичная дробь, за которой следует оператор члена.
(10.).toString();
@pedants и downvoters
.
Характер представляет собой неоднозначность . Можно понимать, что он является оператором-членом или десятичным, в зависимости от его размещения. Если бы не было двусмысленности, не было бы вопроса, чтобы спросить.
Спецификация интерпретации .
символа в этой конкретной позиции заключается в том, что он будет десятичным. Это определяется числовым литеральным синтаксисом ECMAScript.
То, что спецификация разрешает неоднозначность для интерпретатора JS, не означает, что неоднозначность .
символа вообще не существует.
101 плюса
Лексер (он же «токенизатор») при чтении нового токена и при первом нахождении цифры будет продолжать потреблять символы (то есть цифры или одну точку), пока не увидит символ, который не является частью допустимого числа.
<152.>
является допустимым токеном (завершающий 0 не требуется), но <152..>
это не так, поэтому ваш первый пример сводится к следующей серии токенов:
<152.> <.> <toString> <(> <2> <)>
которая является законной (и ожидаемой) последовательностью, тогда как вторая выглядит как
<152.> <toString> <(> <2> <)>
что незаконно - токен, отделяющий номер от toString
звонка, отсутствует.
0 плюса
10.
является float number
вы можете использовать ToString наfloat
например.
parseFloat("10").toString() // "10"
Автор: Anoop
Размещён: 30.10.2012 11:55
Вопросы из категории :
- javascript Как определить, какой из указанных шрифтов был использован на веб-странице?
- javascript Валидация клиентской стороны ASP.Net
- javascript Длина объекта JavaScript
- javascript Получение текста из выпадающего списка
- javascript Скрипт входа со скрытыми кнопками
- javascript Как автоматически изменить размер текстовой области с помощью Prototype?
- javascript Удаление элементов с помощью Array.map в JavaScript
- javascript Прокрутка переполненных DIV с помощью JavaScript
- javascript API Карт Google - проблемы с классом GLatLngBounds
- javascript Проверка десятичных чисел в JavaScript - IsNumeric ()
- syntax Как вы форматируете unsigned long long int, используя printf?
- syntax Как вы передаете функцию в качестве параметра в C?
- syntax Что ** (двойная звезда / звездочка) и * (звездочка / звездочка) делают для параметров?
- syntax Может кто-нибудь объяснить __all__ в Python?
- syntax Какая польза от квадратных скобок [] в операторах sql?
- syntax Как я могу сделать разрыв строки (продолжение строки) в Python?
- syntax Как получить десятичное значение при использовании оператора деления в Python?
- syntax Что предпочтительнее использовать в Python: лямбда-функции или вложенные функции ('def')?
- syntax C # - использование ключевого слова виртуальный + переопределение против нового
- syntax Как мне перебрать диапазон чисел, определенных переменными в Bash?