2013-05-20 2 views
-1

По какой-то причине, когда я пытаюсь вызвать toString на буквальное числе, оно не может:ToString работает только с скобкой или небуквальными числами

> 5.toString() 
SyntaxError: Unexpected token ILLEGAL 

Так что я попытался положить его в переменном, и она работала :

> var five = 5 
undefined 
> five.toString() 
"5" 

Я подумал, что было немного странно, и после того, как некоторые более экспериментируя, я обнаружил, что упаковка буквальным в скобках каким-то образом делает его работу:

> (5).toString() 
"5" 

Это казалось очень странно! Почему обертывание букв в скобках меняет что-нибудь? Почему 5.toString() не работает?

+0

@Musa О, спасибо, я не нашел этого, потому что думал, что это связано с 'toString' и не вызывая методы для чисел: P – Doorknob

+0

@ShahroozJefri Почему вы это отредактировали? – Doorknob

ответ

6

Точка . после того, как число представляет собой десятичную точку.

Это сработает, если вы это сделаете;

5..toString(); 

Чтобы выяснить, когда десятичная точка следует число в JavaScript он ожидает следующий символ, чтобы быть, что из числа, так что если toString() там вместо этого он считается незаконным лексема, как t не является допустимым номер.

Это еще один действительный способ сделать то же самое, но его легче читать и следовать;

5.0.toString(); 
+0

Странно. Благодаря! Я могу принять ответ за 7 минут – Doorknob

+0

Я добавил вам объяснение, – GriffLab

3

Зачем нужно было обертывать буквами в скобках что-нибудь?

Это приводит к тому, что литерал становится выражением. В результате вы можете вызвать метод .toString() в выражении. Как связано с @Musa, . после того, как число интерпретируется как десятичная точка, вызывая исключение, если 5.t встречается, поскольку t не является допустимым числом.