1. JavaScript / Говнокод #11394

    +155

    1. 1
    element.data('selected') ? element.show() : $.noop();

    Либо человек из ассемблера пришел, либо "IF" сильно ему по жизни насолил.

    Запостил: InnerJoin, 11 Июля 2012

    Комментарии (18) RSS

    • тернарный оператор очень клёвый, если его с умом использовать. тут всё нормально.
      Ответить
      • Вы наверное не в курсе, что такое $.noop()? =) Здесь его применение на 100% не оправдано.

        if(element.data('selected')) {
        element.show()
        }

        Выглядит гораздо понятнее.
        Ответить
        • А где его применение вообще оправдывается? :)
          ...Ну, ASM, разумеется, не трогаем, я сам системщик. :) А в джаваскрипте зачем?
          Ответить
          • Например как mock для callback'ов
            Ответить
          • А в асм он зачем? Для выравнивания?
            Ответить
            • Для задержки при работе с периферией в основном.
              Ответить
              • Иногда ещё чтобы заткнуть дырку на месте проверок регистрации/активации/подлинности. :) Не в своём софте, разумеется. :-]
                Ну и выравнивание тоже, но компилер обычно сам этим занимается, в универе эту тиму благополучно упустили а на практике я по вебу пошёл, личного опыта нет...
                Ответить
                • Просто я сам как-бы системщик, но nop не использовал никогда.
                  Ответить
        • Можно ещё так:
          element.data('selected')&&element.show() ;
          Ответить
    • > $.noop()

      $noopy
      Ответить
    • (element.data('selected') ? element.show : $.noop)();
      Ответить
      • Функциональное программирование...
        Ответить
      • Может не покатить:
        var element = {
        	show: function() {
        		alert(this == element);
        	}
        };
        (true ? element.show : noop)();
        Ответить
        • Офигеть.
          Ответить
          • Ну так это по-сути: element.show.call() только в профиль. Можно было бы:
            (element.data('selected') ? element.show : $.noop).apply(element);

            тогда бы все работало как задумано.
            Ответить
    • позвольте, зачем jquery, есть же void(0), чем он хуже
      Ответить
      • Это вообще не функция. void это оператор который убирает значение вычисленное в предыдущей операции. В таком варианте как у вас - он вообще ошибочен / бесполезен.
        В принципе, его не нужно использовать никогда, но в теории, что-то типа такого могло бы работать (только не понятно зачем):
        var a = 0, b = 1;
        a = void ++b;
        console.log("a = " + a + " b = " + b); // a = undefined b = 2
        Ответить

    Добавить комментарий