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

    +155

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    jQuery.each(elems, function(i, elem) {
                    if (typeof elem === "number") {
                        elem += "";
                    }
                    if (!elem) {
                        return;
                    }
                    if (typeof elem === "string" && !rhtml.test(elem)) {
                        elem = context.createTextNode(elem);
                    } else if (typeof elem === "string") {
                        elem = elem.replace(rxhtmlTag, fcloseTag);
                        var tag = (rtagName.exec(elem) || ["", ""])[1].toLowerCase(),
                            wrap = wrapMap[tag] || wrapMap._default,
                            depth = wrap[0],
                            div = context.createElement("div");
                        div.innerHTML = wrap[1] + elem + wrap[2];
                        while (depth--) {
                            div = div.lastChild;
                        }
                        if (!jQuery.support.tbody) {
                            var hasBody = rtbody.test(elem),
                                tbody = tag === "table" && !hasBody ? div.firstChild && div.firstChild.childNodes : wrap[1] === "<table>" && !hasBody ? div.childNodes : [];
                            for (var j = tbody.length - 1; j >= 0; --j) {
                                if (jQuery.nodeName(tbody[j], "tbody") && !tbody[j].childNodes.length) {
                                    tbody[j].parentNode.removeChild(tbody[j]);
                                }
                            }
                        }
                        if (!jQuery.support.leadingWhitespace && rleadingWhitespace.test(elem)) {
                            div.insertBefore(context.createTextNode(rleadingWhitespace.exec(elem)[0]), div.firstChild);
                        }
                        elem = jQuery.makeArray(div.childNodes);
                    }
                    if (elem.nodeType) {
                        ret.push(elem);
                    } else {
                        ret = jQuery.merge(ret, elem);
                    }
                });

    Запостил: mark, 24 Июля 2011

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

    • Впринципе, только этого уже бы хватило:
      elem += "";
      Ответить
      • Преобразование в строку. Что странного?
        Ответить
        • Странного - ничего, а плохого - то, что для этого есть специальные функции (число можно представить в строке по-разному). А операция тут используется не по назначению, и просто вызывает недоумение у читающего. Логично было бы не проверять, а привести все к одному типу. Но тут много чего вызывает недоумение - например, строгое равенство примененное к простым типам, группировка условий по непонятному принципу. Кроме того, даже прочитав несколько раз остается подозрение, что функция делает что-то лишнее (но не понятно изза того, что есть неопределенные переменные).
          Ответить
    • показать все, что скрытоПАСОНЫ, ДАВАЙТЕ ПОЧАТИМСИ
      Ответить
    • прикольно, я открываю любой сайт, копирую из рандомного места кусок кода, вставляю сюда и его обсуждают =D
      этот кусок кода вроде отсюда, с говнокода выдрал =D
      Ответить
      • Бывает. Куски с говнокода уже публиковали.

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

        Поэтому можно копировать куски из любого сайта, где есть jQuery или подобные библиотеки, «упрощающие жизнь». У меня такое предчувствие, что если выдрать куски из страниц Яндекса и Гугла, то их тоже будут обсуждать. Правда, там нет форматирования и переменные носят бессмысленные имена (обфускатор?), поэтому может успеха и не быть.
        Ответить
        • у гоогле - обфускатор, правда с гордым названием и на Java
          Ответить

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