2009 / 03 / 15

manual written if

Как многие из вас в курсе, на днях на хабре промелькнул топик «Как я гонял на клаве», от хабраюзера jahson. Примечателен этот топик вовсе не своим скриптом, а тем, что дал старт достаточно неприятной сваре, в ходе которой владелец и автор «Клавогонок», известный на хабре как artch, повел себя, на мой взгляд, не вполне адекватно. Это не говоря уж о том, что решать такие вопросы принято в личке, не привлекая общественное мнение (которое, к слову, катком прошлось по карме artch).

По мере того, как я читал обсуждение, мне все больше становилось жаль jahson’a, по мере сил отбивавшегося от нападок автора и присных. И в процессе этого сочуствования решил я поднять jahson’у карму, зайдя в его личку. Где увидел не только то, что он не особо нуждается в помощи, но и то, что он член «Российского крыла Web Standards Group».

Тут надо сделать отступление — я, вообще говоря, не знал о существовании такой организации, точнее, о существовании ее российского крыла, и немедленно заинтересовался. Набрав в гугле известное сочетание слов, я попал на страничку «Веб-стандарты — WSG-Россия». Интересно, можно ли еще попасть в ряды, или лавочка уже прикрыта? Судя по тому, что последние встречи проводились в 2007 году, то уже нет, но, если кто-то владеет более актуальной информацией, призываю его поделиться.

Внизу главной странички есть калейдоскоп ссылок под названием «список контактных лиц», и, если пройти по ним, то выяснится, что за ними скрываются очень знакомые и авторитетные люди и ресурсы. Люди, в той или иной степени определяющие сегодняшний облик рунета. Например, по тому же webmascon лично я учился верстке.

Отдельно хотелось бы упомянуть Дмитрия Барановского, который, к слову, присутствует и на хабре под псевдонимом… DmitryBaranovskiy (сюрприз!) и, по совместительству, является разработчиком Raphaël—JavaScript Library.

Читая его блог, я наткнулся на его пост «JavaScript Without „if“», и вспомнил, что у меня валяется в загашниках очень похожая штука:

1
2
3
4
5
6
7
8
9
10
11
12
IF = {
    'true' : function () {
        alert('true');
    },
    'false' : function () {
        alert('false')
    }
};

IF[(5 < 4)](); // should be false

IF[(typeof window.UnusualAndStrangeProperty === 'undefined')](); // should be true

Думаю, как это работает, очевидно, поэтому я хочу заострить внимание на другом: такая конструкция, по идее, должна работать достаточно быстро, так как доступ к свойствам объекта в javascript очень быстр. Правда, в таком случае мы платим памятью за скорость. И действительно, тесты в safari показывают, что этот код лишь чуть-чуть медленнее классической конструкции if… else. Про остальные браузеры ничего не могу сказать, так как всесторонним тестированием не занимался — да и не стоит оно того, это же чисто proof of concept.

В общем, как обычно, гибкость javascript достойна всяческих похвал. Если в этом языке чего-то не хватает, то это что-то легко может быть дописано руками.

blog comments powered by Disqus