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

    +157

    1. 1
    var c = 'function' === typeof o.pop ? [] : {};

    Запостил: хуита, 05 Мая 2012

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

    • Какой-нибудь костыль для мультибраузерности?
      Ответить
      • Не, быстрая проверка на то, что o — массив.
        Хотя тут либо var c = o.pop? [] : {} для экономии места, либо полноценную проверку (например, через o instanceof Array).
        Ответить
        • а если "массив" - пустой?
          Ответить
        • Нет, проверка на то, что o.pop - функция, но от того, что такой метод есть у массива не следует, что o массив. Или, если именно так автор проверял, что o - массив, тогда печально.

          А, ну и еще три равно для сравнения со строкой... т.е. автор предполагал, что typeof x может вернуть new String("object") или что-то в этом духе. Вобщем, печально.
          Ответить
          • Так проверка быстрая же :)
            А строгое равенство, видимо, для скорости.

            В общем, говнокод, конечно, потому что и в размере выигрыша нет и не универсально.
            Ответить
            • Для строк строгое равенство и нестрогое - это одна и та же функция. Разница только если пытаться сравнить строку с не-строкой, или если сравнивать с new String(...).
              Ответить
            • [].pop == Array.prototype.pop

              Кстати, если так сравнивать, то работало бы даже почти правильно (за исключением того, что прототип можно динамически "унаследовать")
              Ответить
    • >Запостил: хуита

      Логичнее смотрелся бы ник "хуиту"
      Ответить

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