Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> javascript:alert(parseInt("08")); выдает 0 
:(
    Опции темы
02077461
Дата 20.11.2007, 03:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 183
Регистрация: 13.7.2005

Репутация: нет
Всего: 0



Собственно тема:
напишите javascript:alert(parseInt("07"));  в строке браузера, увидите 7, напишите javascript:alert(parseInt("08")); что увидите?..
Кто сможет объяснить?..
PM   Вверх
AKS
Дата 20.11.2007, 07:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Участник форума
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 20.9.2006

Репутация: 27
Всего: 52



PM MAIL   Вверх
cruelangel
Дата 20.11.2007, 09:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 319
Регистрация: 12.9.2007

Репутация: 4
Всего: 8



javascript:alert(parseInt("0xff"));
javascript:alert(parseInt("2.5e+2"));
PM MAIL   Вверх
xvr
Дата 20.11.2007, 13:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: нет
Всего: 223



Цитата(02077461 @ 20.11.2007,  03:43)
Собственно тема:
напишите javascript:alert(parseInt("07"));  в строке браузера, увидите 7, напишите javascript:alert(parseInt("08")); что увидите?..
Кто сможет объяснить?..

Это врожденный баг любого компилятора/интерпретатора - они выполняют то, что програмист написал, а не то, о чем он думал smile
Вопрос на засыпку - чему равно ВОСЬМЕРИЧНОЕ число 8 ? (08 - это именно оно и есть)


PM MAIL   Вверх
AKS
Дата 20.11.2007, 18:34 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Участник форума
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 20.9.2006

Репутация: 27
Всего: 52



Цитата(xvr @  20.11.2007,  13:38 Найти цитируемый пост)
Это врожденный баг любого компилятора/интерпретатора

Нет, на самом деле, никакого бага. Я не случайно выше взял это слово в кавычки.


Цитата(xvr @  20.11.2007,  13:38 Найти цитируемый пост)
Вопрос на засыпку - чему равно ВОСЬМЕРИЧНОЕ число 8 ? 

Встречный вопрос на засыпку - а где Вы увидели ВОСЬМЕРИЧНОЕ число? 
Есть только строка '08'. Другой вопрос - как будет эта строка интерпретирована? ECMAScript Language Specification в случае, когда не указано основание (вторым параметром), позволяет представить эту строку или же восьмеричным, или же десятичным числом. Есть одна оговорка - было бы предпочтительней представить значение строки, как число в десятичной форме. Но оговорки оговорками, а движки работают так, как им удобней, пользуясь вольной трактовкой в спецификации. В результате из доступных мне сейчас браузеров лишь Opera учитывает "пожелание":
Цитата(ECMAScript Language Specification 15.1.2.2 parseInt)

Implementations are encouraged to interpret numbers in this case as being decimal.

Вывод один - чтобы получить кроссбраузерный результат, нужно явно передавать в parseInt второй параметр.
PM MAIL   Вверх
dsCode
Дата 20.11.2007, 19:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 565
Регистрация: 8.9.2007
Где: Saint-Petersburg

Репутация: 19
Всего: 26



Цитата(AKS @  20.11.2007,  18:34 Найти цитируемый пост)
Вывод один - чтобы получить кроссбраузерный результат, нужно явно передавать в parseInt второй параметр.

добавлю к этому: либо использовать через parseFloat(...), где подобный баг не наблюдается smile - parseInt(parseFloat('08'));, хотя вариант с указанием СС - более красивый =)


--------------------
the .code inside
:my music
PM MAIL WWW ICQ Jabber   Вверх
02077461
Дата 20.11.2007, 22:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 183
Регистрация: 13.7.2005

Репутация: нет
Всего: 0



Спасибо всем, предполагал что-то подобное. Отдельное спасибо AKS.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0583 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.