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

    +159

    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
    window.checkPluginVersion = function(id, version) {
        if (!(plugin(id) && plugin(id).valid)) return false;
        var plugin_version = plugin(id).version.split('.');
        var portal_version = version.split('.');
        if (isNaN(parseInt(plugin_version[0]))) return false;
        if (isNaN(parseInt(plugin_version[1]))) return false;
        if (isNaN(parseInt(plugin_version[2]))) return false;
        if (isNaN(parseInt(portal_version[0]))) return false;
        if (isNaN(parseInt(portal_version[1]))) return false;
        if (isNaN(parseInt(portal_version[2]))) return false;
        if (parseInt(plugin_version[0]) > parseInt(portal_version[0])) return true;
        if (parseInt(plugin_version[0]) < parseInt(portal_version[0])) return false;
        if (parseInt(plugin_version[1]) > parseInt(portal_version[1])) return true;
        if (parseInt(plugin_version[1]) < parseInt(portal_version[1])) return false;
        if (parseInt(plugin_version[2]) > parseInt(portal_version[2])) return true;
        if (parseInt(plugin_version[2]) < parseInt(portal_version[2])) return false;
        return true;
    }

    Код с Госуслуг. Nuff said

    Запостил: dmgl, 13 Марта 2014

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

    • показать все, что скрытоЯ над твоим отцом глумился.
      Ответить
    • Вот уж не подумал бы никогда, что инт может принимать значение NaN...вероятно, там во флоат конвертировалось изначально.
      Ответить
      • В Js все числа представлены как float
        Ответить
        • >В Js все числа представлены как float
          Я бы так не сказал, в js есть средства как для более строгой типизации так и для байтоебства.
          var buf = new Int8Array(new ArrayBuffer(8), 4);
          for (var i=0;i<200;++buf[0],++i);
          console.log(buf[0]);
          Ответить
          • В каком стандарте описаны эти средства? Они всюду гуглятся, но в ECMA-262 5.1 2011 года не грепаются.
            Ответить
            • http://www.khronos.org/registry/typedarray/specs/latest/
              http://caniuse.com/typedarrays

              Важен факт поддержки сей фичи всеми нормальными браузерами.
              Ответить
    • Надо написать метод объединяющий функционал isNan и parseInt. А то сам их часто вместе использую
      Ответить
    • if(isNull(plugin_version=plugin(id).vers ion.exec(/^(\d{1,4})\.(\d{1,4})\.(\d{1,4})(\..+)?$/))||
      isNull(portal_version=portal.version.exe c(/^(\d{1,4})\.(\d{1,4})\.(\d{1,4})(\..+)?$/))){ return false; }
      return (plugin_version[1]=+plugin_version[1])>(portal_version[1]=+portal_version[1])||
      plugin_version[1]==portal_version[1]&&(
      (plugin_version[2]=+plugin_version[2])>(portal_version[2]=+portal_version[2])||
      plugin_version[2]==portal_version[2]&&+plugin_version[3]>=+portal_version[3]);
      Ответить
    • >if (parseInt(plugin_version[0]) > parseInt(portal_version[0])) return true;
      Лолшто?
      Ответить
    • cleaned
      Ответить

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