Поведение Javascript с числами

Пробовал сравнивать 10 и 010 as 10 == 010, но получил результат false.

Затем я попытался напечатать/оповестить следующие значения,

10 result 10
010 result 8
12 result 12
012 result 10
100 result 100
0100 result 64
65 result 65
065 result 53
99 result 99
099 result 99
196 result 196
0196 result 196

Такие же результаты для отрицательных чисел,

-99 result -99
-099 result -99
-32 result -32
-032 result -26
-196 result -196
-0196 result -196
-66 result -66
-066 result -54

Подробнее

от (+/-)078 до (+/-)099 результаты такие же правильные.

Ex:

78 result 78
078 result 78
-87 result -87
-087 result -87

То же поведение в Chrome, FireFox, IE.

Мне интересно, почему это странное поведение? Это ошибка JS или особенность JS. Может кто-нибудь объяснить, почему это так.

Заранее спасибо.

Пожалуйста, прокомментируйте, если вам нужны какие-либо подробности.


person D P Venkatesh    schedule 29.10.2014    source источник
comment
Пожалуйста, покажите фактический задействованный JS. Но обратите внимание, что начальный ноль говорит о том, что вы хотите, чтобы число рассматривалось как восьмеричное. (И ведущий 0x, как в 0x123, говорит, что число шестнадцатеричное.)   -  person nnnnnn    schedule 29.10.2014
comment
Это особенность. Числа, начинающиеся с 0, считаются восьмеричными, а числа, начинающиеся с 0x, — шестнадцатеричными.   -  person pawel    schedule 29.10.2014
comment
Как указано выше, они рассматриваются как восьмеричные. Вы также можете проверить это, выполнив 10 == 012 (true), потому что, как вы нашли выше, восьмеричное число 012 равно 10 в десятичном виде. Вот почему очень важно установить систему счисления в parseInt() и это даже указано в описании   -  person Spokey    schedule 29.10.2014