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

    +157.5

    1. 1
    2. 2
    3. 3
    function isDefined(variable) {
      return (!(!(variable||false)))
    }

    откопал в проекте... лично я смысла не вижу, мб кто-то расскажет под какой хитрый браузер или ситуацию это писалось? =)

    Запостил: VermiVermi, 30 Ноября 2009

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

    • undefined != false, но !(undefined) = true;
      Тобишь возвращает корректный ответ, определена чи ни переменная.
      Ответить
      • корректный ответ:
        variable !== undefined
        Ответить
        • undefined = 1;
          alert(window.bla_bla !== undefined);

          typeof null == typeof {}

          тобишь оно параноидально и нуллы за андефы считает.
          Ответить
    • Или typeof variable != 'undefined'
      Ответить
      • Опс, это ответ к комменту http://govnokod.ru/2196#comment10797
        Ответить
    • можно просто написать !!variable
      Ответить
    • Два восклицательных знака - это приведение к типу boolean. Код нормален.
      Разве что скобки можно убрать первые и вторые.
      Ответить
      • А как Вам кажется, какая запись компактней и быстрей?
        toBool = function(o){return !!(o||false)};
        toBool(obj)
        Или
        !!obj
        ?
        Ответить
        • alert(!!a); <- "a is not defined" в firefox 3.5.5
          Ответить
          • (function(a){alert(!!a)})();
            alert(!!window.a);
            var a; alert(!!a);
            Ответить
        • Компактней кажется !!obj тут же символов меньше!
          Быстрей кажется !!obj, вызова функции нет.
          ==
          ну да, писать для это функцию не нужно
          Ответить

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