Комментарии 73
индусы?
0
а как еще в одну строчку инвертировать булеву переменную?
+1
a=!b; // =)
0
//прошу прощения:
a=!a;
a=!a;
+1
Я ничуть не оправдываю вышеприведенный код, но что будет если до инверсии xthtp ! obj_.checked будет undefined?
+1
Будет эксцепшн. :) Ну а в данной конкретной реализации там на 2 строки выше была проверка на существование obj_, а если объект существует - то это свойство в этой конкретной реализации обязательно задано, это же JS :)
-3
У чекбокса при снятом флажке свойство checked выставляется в undefined, а совсем не в false, как все ожидают. Сам с этим однажды столкнулся, и дебажил потом алертами.
-1
Зачем алертами? Есть же FireBug :)
+1
Для тех кто не пользуются FF, DragonFly тоже есть ;)
Но для быстроты можно и алертами :)
Но для быстроты можно и алертами :)
0
Когда нет возможности использовать альтернативный браузер, то приходится алертами. :) Ощутил на собственном опыте, с `той` системой, где работаю я - из браузеров не работает ничего, кроме осла. Ибо особенность единой авторизации.
0
Интересно, а что за "та" система?)
0
Корпоративный проект, раскрывать подробности не имею возможности, моя роль там не так велика. А причина пригодности только одного браузера, если простым языком - единая авторизация в базе данных приложения и системе (информация доступна через веб интерфейс после успешного входа в систему, что-то типа NTLM там)
0
Ну про NTLM-то я в курсе, и проверку Kerberos, встроенные в операционную систему. Мы сами это используем, создавая решения для MS Office SharePoint Server (а там вообще только с IE можно нормально работать).
Я просто думал, что для других браузеров тоже можно настроить.
Я просто думал, что для других браузеров тоже можно настроить.
0
Тоже доводилось дебажить JS по IE, пользовался Microsoft Script Editor (MSE), кажется входит в состав мс офиса.
0
obj.checked = !obj["checked"]
-1
obj_.checked = !obj_.checked
?
?
+3
блин точно - че то протупил )
+1
В один символ "!" ;)
+2
a = !!!a; :)
+6
это не так уж далеко от истины - оператор !! приводит любой объект к булеву типу. Так что вышло очень даже в стиле языка со статической типизацией.
0
как эмоционально а = !!!!!!!!!а;
0
Никогда не понимал, почему минусуют безобидные вопросы.
Все-таки нельзя же сказать, что этот комментарий именно плохой?
А так человек в следующий раз побоится сказать что он что-то не знает.
Ведь это так ценно, когда люди открыто говорят, что они что-то не знают, особенно в нашей отрасли!
Все-таки нельзя же сказать, что этот комментарий именно плохой?
А так человек в следующий раз побоится сказать что он что-то не знает.
Ведь это так ценно, когда люди открыто говорят, что они что-то не знают, особенно в нашей отрасли!
+2
Абсолютно согласен! Вам плюс в карму (а за комментарии кончились плюсы уже =) ), а dab512 плюс - за "моральный ущерб" =)
У всех бывают "тупняки". И раньше все чего-то не знали! И никогда не стесняйтесь задавать вопросы! Это нормально чего-то не знать! А только за желание что-то узнать уже можно уважать!
А минусуют в паблике - добро пожаловать в почту, даже лично к себе приглашаю, еще никогда не отказывал в совете! И надеюсь мало кто откажет при личном обращении. Совет это не затратно и не трудно для помогающего. Взаимопомощь это то, что помогает выжить в современном мире, и по крайней мере странно этого не понимать. Удачи ;)
У всех бывают "тупняки". И раньше все чего-то не знали! И никогда не стесняйтесь задавать вопросы! Это нормально чего-то не знать! А только за желание что-то узнать уже можно уважать!
А минусуют в паблике - добро пожаловать в почту, даже лично к себе приглашаю, еще никогда не отказывал в совете! И надеюсь мало кто откажет при личном обращении. Совет это не затратно и не трудно для помогающего. Взаимопомощь это то, что помогает выжить в современном мире, и по крайней мере странно этого не понимать. Удачи ;)
+1
Такой код не редкость. Пишется он обычно в 4-5 утра под подсказку дружной компании: мышки, кофе и скрепки из ворда
+11
я такое вот встречал в сторонних коммерческих скриптах.
window.location.href='javascript:history.back()'
window.location.href='javascript:history.back()'
+4
НА самом деле часто бывает. И я на подобные штуки попадался. Это когда простейшим задачкам находишь почемуто сложные решения. Вообщем спать нужно больше.
+1
вполне жизнеспособный код и, что важно, удобочитаемый
+1
Не так уж все и страшно... Код не лишний, просто неоптимальный.
0
На самом деле ничего смешного в коде нет.
Сам лично написал примерно то же самое около месяца назаж, помучившись минут 10 из-за того что поведение было совсем не таким, как планировалось. В итоге оставил для себя же (маловероятно что в тот код кто-то другой полезет править) небольшой камент:
Сам лично написал примерно то же самое около месяца назаж, помучившись минут 10 из-за того что поведение было совсем не таким, как планировалось. В итоге оставил для себя же (маловероятно что в тот код кто-то другой полезет править) небольшой камент:
// need this because when unchecked attr gives undefined value instead of false
var checked = $(this).attr('checked') == true ? true : false;
+2
Я писал о чем то подобном в http://habrahabr.ru/blog/code_wtf/47054.html#comment1010291
Именно из за того что JScript строго себя ведет при операциях с undefined значениями и приходится иногда так извращаться, усложняя логику программы. С другой стороны подобный контроль неявных инициализаций оберегает от возможных ошибок.
Именно из за того что JScript строго себя ведет при операциях с undefined значениями и приходится иногда так извращаться, усложняя логику программы. С другой стороны подобный контроль неявных инициализаций оберегает от возможных ошибок.
0
Можно использовать двойную инверсию !!value
+3
var checked = $(this).attr('checked') == true;
достаточно такого... оператор == возвращает bool.
достаточно такого... оператор == возвращает bool.
+1
вот так работает оператор not :o)
0
ага, слово "йа" можно писать одной буквой? :)
+3
зато после выполнения кода переменная гарантированно проинициализированна
0
Да йопт, это вы еще не видели заголовочные файлы от гцц.
Там перлы просто. Перлы.
#define true true
Там перлы просто. Перлы.
#define true true
0
Ребята, я конечно все понимаю, но скажите мне, зачем срать в карму? Рейтинг статьи растет вверх, а карма падает. А ведь хотел просто поделиться с вами интересной по моему мнению информацией, и при этом вроде бы не задел ни чьих интересов. Разочарован. Реально после такой реакции 10 раз подумаешь перед тем как куда-то что-то писать. :(
+1
Ага, странный эффект. Постоянно всплывает.
Up.
Up.
0
вобщем-то думать надо перед написанием статьи, а не после..
подумал-бы - глядишь, и промолчал. и карма в целости, и ничего в топ не всплывает.
подумал-бы - глядишь, и промолчал. и карма в целости, и ничего в топ не всплывает.
0
Я с вами согласен, но "парадокс" (впрочем довольно частый) именно в том, что рейтинг статьи и карма "растут" в разные стороны. Если бы они изменялись сонаправлено - у меня бы не возникало таких вопросов - все было бы сразу понятно, или инфа - говно (все в минусе) или всем понравилось (все в плюсе). И не было бы подобных вот постов с моей стороны.
0
Довольно часто встречаю у новичков подобную конструкцию. Это проходит с возрастом... должно пройти)
-1
НЛО прилетело и опубликовало эту надпись здесь
иногда написать лучше длиннее, но надежнее. В этом случае у нас вконце точно получится либо true либо false, никаких null и undefined. Насчет !a я не уверен, undefined не получится?
0
Не получится. a = !a — это самое правильное решение в данном случае.
0
Обсуждалось уже выше. В случае если "a" было undefined (а для свойства checked у объекта checkbox это может быть легко) то !a вызовет эксепшн.
-1
Да, что вы говорите! А вы попробуйте :) Если а в принципе определена как переменная никакого exception не будет. Учите матчасть. ;)
0
ну вобщем видите - вызвало сомнения у нас новичков, а писать лучше так, что сомнений нет. Не исключаю бы что и сам так написал в 5 утра. Осуждать лучше кривые алгоритмы, а такие штуки - плохой стиль, говнокод, но на работу-то и на скорость даже не особо влияет.
ps еще бывают генераторы кода, я себе стандартную половину программы на php обычно генерирую. Получается совсем не идеально, но быстро.
ps еще бывают генераторы кода, я себе стандартную половину программы на php обычно генерирую. Получается совсем не идеально, но быстро.
-1
Сходу в тестовом примере (простая статичная форма, IE 6, FF 2.0.0.16, Opera 9.24) добиться undefined действительно не получилось, но по опыту помню что в некоторых случаях это вполне возможно. В любом случае как говорил мой препод по ТРПО (теории разработки программного обеспечения) - "сохраняйся и предохраняйся". Лично я стараюсь никогда не делать действий над объектами - элементами формы, предварительно не проверив их.
-1
бывает, что не можешь вспомнить какое-нибудь очень простое слово по-английски. Вот и с очевидными решениями так. Видимо кодил начинающий и в тот день был явно не в духе.
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
JavaScript