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

    +160

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    ­  //create a list of rules to block
      var blockRules = ["http://example.com/images/*",
                         "*://example.org/css/*"];
    
      // add them to the content blocker
      for (var rule in blockRules) {
        opera.extension.urlfilter.block.add(blockRules[rule])
      }

    Экзампле из официальной документации одного браузера, отчаянно пытающегося прекратить катиться в сраное говно и набрать популярность.
    Будет растащено хомячками на копипасту.

    И, striker, убери уже этот долбанный trim для leading spaces

    Запостил: bugmenot, 13 Апреля 2011

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

    • эээ, а в чём говно? в for ( in )?
      Ответить
      • отож! Array жеж!
        неужели надо объяснять?
        Ответить
        • Они просто думают о будущем.
          Ответить
          • иначе говоря: аутисты
            Ответить
          • светлом будущем с быстрыми процами, когда всем будет похуй на
            rule = String(index);
            index = Number(rule);

            в каждой итерации, а за изменения прототипа будет анально карать всемирная организация здравоохранения
            Ответить
            • Можно было добавить Object.seal(blockRules); - это даже IE вроде поддерживает. Но проблема, что в какой-то из реализаций [].isPropertyEnumerable("length") == true. И с этим уже, ну кроссбраузерно точно ничего не сделать.
              Конвертации о которых идет речь будут происходить в любом случае, т.как тип переменной нигде не хранится и определяется по ситуации, так что это никак не повлияет на производительность. В смысле, она все равно будет плохой, ну только если не используется ES4 со строгой типизацией (я таких сайтов не видел).
              Ответить
              • wtf? к чему это всё? зачем изъебываться если есть цикл for от 0 до length-1 со счетчиком типа Number (и ВНЕЗАПНО тип совпадает с индексатором массивов)
                Ответить
                • Еще раз, тип внезапно ни с чем не совпадает, JavaScript не хранит информацию о типе, а каждый раз при обращении к свойству, на месте, решает какой тип использовать. А сказано это было к тому, что конвертация типов для данного примера не является ухудшением или улучшением, она все равно происходит, хотите вы или нет. Реализации JavaScript могут оптимизировать работу циклов, например, предположив, что итератор должен быть числом, но они не обязаны это делать.
                  Ответить
                  • Лазал в ECMA-262, там они в горних облаках абстракции витают и действительно ни слова про имплементацию, и индекс предлагают приводить toInt32. Зато нашелся еще один довод за то, что for (string in array) - говно, это - освященная спецификацией неопределенность порядка энумерации.
                    Ответить

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