ДействиеСценарий / Говнокод #10271 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
/**
     * This is a really fast way to check for NaN; see the spec of NaN
     * on why this works; this check can yield false only for a Number
     * since it's the only one capable of having NaN as a value.
     */
    if (d != d) {
     throw new Error("value can't be NaN!");
    }

Запостил: kyzi007 kyzi007, (Updated )

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

  • Наоборот красивый код, если конечно верить комменту.
    Ответить
    • isNaN(d) и ниипет.
      Ненавижу когда код превращают в угадайку которая еще неизвестно как себя поведет в новой версии.
      Ответить
      • isNaN, разумеется, рулит, но код в теории должен работать всегда, ибо спецификация (я так в фортране ещё делал)
        Ответить
            • Я хочу уходить на руби, очень хочу. Я даже временно свободна от работодятлов. Но без опыта меня никто не хочет, а по второму кругу работать за еду как то не вставляет )
              пс прикинутся студенткой штоли, а то мой опыт пугает?
              Ответить
    • Если бы я скопила без эксепшена и коммента - 80% флешеров вообще не поняли бы что это.
      И что все использования этого кода сопровождать куском комментов?
      Ответить
  • Кстати во флеше d!=d может нести вообще другой смысл.
    public  function get d():Number {return Math.random();}
    public function isNaND(){return d!= d;}
    Ответить
  • Видать большой прирост в скорости дает, раз не лень такой большой комментарий писать было ))
    Ответить
    • Ну начнем с того что отлов ошибок все сьест - трай кетч медленный сволочь.
      А закончим - 100мс на 10 000 000 000 интераций.
      Ответить
  • Нормальное решение. isNaN( null ) === isNaN( undefined ) === true.
    Ответить
    • Мм, ну если у вас в намберы такое в порядке вещей когда попадает, то да, нормальное.
      Ответить
    • В AS3 так не получится, только если замаскироваться от компилятора и потерять тип аргументов функции - а так, вообще isNaN требует Number - так что не скомпилится просто.
      Ответить
  • Может в целях производительности сделали. На 100% не уверен, но скорее всего isNaN компилируется как вызов функции, а простое сравнение работает в разы быстрее.
    Ответить
    • Не в разы, процентов на 30%.
      На самом деле такие оптимизации простым смертным почти никогда не нужны.
      К тому же без комментариев код вставлять нельзя - из опрошенного комьюнити почти никто не понял что это за фигня такая.
      Ответить

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

Из-за тебя ушел bormand, guest!

    А не использовать ли нам bbcode?


    8