Javascript Fuckup

Dec 20, 2011 12:05

12:04 20.12.2011

Javascript Fuckup

Есть у меня репозиторий номеров журналов на CouchDB по ней есть map-reduce -> post-process (list function), который вываливают понятный клиентской программе JSON со списком номеров; номера имеют дату выхода в формате dd.mm.yyyy (дата хранится как строка). В старой версии номера сортировались на сервере. Дата на чиселки билась примерно так:

date.split('.').map(function(x) { return parseInt(x) })

Теперь попробуйте эту строчку повбивать, например, в консоли Chrome/Safari/etc:
вначале на01.10.2011потом на02.10.2011и так до07.10.2011а потом08.10.2011
И получаем совершенно внезапно НЕ ТО. Тоже самое с 09; с 10 всё уже ок, как и с 8 и 9.

Сегодня (08.08.2011) вышел новый номер и неправильно отсортировался. А теперь, кто не знает, может погуглить как работает parseInt

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

date.split('.').map(function(x) { return parseInt(x, 10) })

Типичный пример лютого нарушения принципа "наименьшего удивления". Собственно весь Javascript - пример нарушения этого принципа. За такоё по-моему надо убивать.



read more at Nekrologic

rss2lj

couchdb, javascript, [self thoughts], [self code], fuckup

Next post
Up