Вот смотри сколько геморроя. Там просто id-am-ap, числа, в куках, куки текст, значит там может быть что угодно, или может быть ничего. Проверь, может я тупой и можно упростить, ибо мне пришлось регой еще проверять, чтобы эти гребаные NaN не проверять.
is_numeric=function(v){ return /^\d?\d+\.?\d*$/.test(v); }, get_cart=function() { var c=oCookie.load(key); if(!c) return {}; try{cart=JSON.parse(c);}catch(e){return {};} for(var id in this.cart){ var item=cart[id]; if( is_numeric(id)==false || typeof item.am==='undefined' || typeof item.ap==='undefined' || is_numeric(item.ap)==false || is_numeric(item.am)==false ) { delete(cart[id]); continue; } oCookie.save(key,JSON.stringify(cart)); } return cart; }, |
Цитата:
|
Прикол, отпостил эту хрень и косяк нашел. for(var id in this.cart) - вот еще подстава с этими this. Не должно работать, а работает, потому что забыл var тут try{cart=JSON.parse(c);} и все срослось. )
|
Rise, а если нету cart[id].ap? Или если там -30? Или 30.35?
Переменная должна быть, там должно быть целое положительное число. И еще этот NaN проверить надо. Я понимаю, что юзер чинить куки не полезет, но туда может записаться какая угодно хрень теоретически. |
ochen,
Лучшее объяснение я прочитал в книге от орэйли. NaN используется для представления числового результата не имеющего представление. Т.е деление 0/0 мы представить можем, но результат уже не в состоянии срендерить, если только ты не просветленный дзен-мастер. |
Цитата:
Цитата:
(на самом деле в современном js есть типизированые массивы, и вообще asm.js, но это не подходящий юзкейс для них) Эмулировать по-старинке, если хочется, можно примерно так: function uint(n){ retutn n>>>0 } function int(n){ retutn n|0 } function float(n){ retutn +n||0 } Кстати регулярка у вас действительно нацеленная на float. |
Цитата:
Цитата:
Я несколько раз смотрел как написаны isset's на js и каждый раз посмотрев закрывал в печали. Там кошмар. |
Цитата:
Конечно, погроммисты могут принудить юзеров и NaN, null, undefined понимать в интерфейсах, но здесь предмет глубже. Они просто еще не сломали сопротивление юзеров в самом очевидном, в том что 0/0=0. Во всем остальном давно сломали. Пишут как доктора или как юристы в своей погроммистской логике, другого нет, юзеру приходится изворачиваться, приспосабливаться, и ему уже даже нравится выполнять текстовые команды раскиданные по менюхам и он уже называет это графический интерфейс. Погроммисты делают свою культуру. |
Причем если даже погроммиста наказать приковав к своему детищу цепями, как к веслам на галере, он нисколько не огорчится, ему нормально когда все через жопу, не для людей. И сравнить нельзя. Возьмем программу для людей, прикуем к ней программиста, он сделает за отчетный период в ней больше и лучше и скажут - ну вот, этот программист просто лучше. Не скажут же - потому что его культура гуманная, а не техническая. Просто его техника лучше.
|
Грань между профанацией и гуманизмом весьма тонкая и неуловимая. Под давлением охреневшего заказчика не могущего понять, отчего клиенты не жалуют, погроммист может нахерачить свистелок и перделок типа гуманных, типа прокрустова ложа для ввода номера телефона, а бизнес-логику реализовать в сугубо техническом жанре. Скочет как сантехник в стеклянных бусах, а чо, красиво же. Лол.
|
Часовой пояс GMT +3, время: 22:11. |