ЙажаСценарий / Говнокод #19294 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
while ((math == (math = Math)).toString() == "true") {
   ...
}

программист-дотер

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

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

  • почему выражение
    (math == (math = Math))
    возвращает false?
    разве не должно быть как с ++i + ++i ?
    Ответить
    • Так присваивание-то одно, это не UB.
      Хм, а почему false? Первым должно вычислиться (math = Math), ибо скобки, после чего '==' вернет true. Или я чего-то не понимаю?
      Ответить
      • > var Math = 1;
        > var math = 0;
        > (math == (math = Math))
        < false
        > math
        < 1
        > Math
        < 1

        Wtf? Жсеры, помогите!
        Ответить
        • Да вроде всё и без жсеров понятно
          > function a() { console.log("A();"); return "ok"; }
          > function b() { console.log("B();"); return "o"; }
          > (a() == (b() + "k"))
          A();
          B();
          < true
          Ответить
          • но ведь справа скобки, то что в скобках должно исполняться первым
            Ответить
            • Почему? Не знаю как в этом вашем говноjs, но в си порядок вычисления выражений слева и справа от == не определен. Скобки или нет, не важно.
              Ответить
                • > (a == ( c = a)) возвращает true
                  Потому что значение этого выражения не зависит от порядка вычисления аргументов оператора ==, в отличие от (a == (a = c)).
                  Ответить
                  • >> не зависит от порядка вычисления аргументов оператора ==, в отличие от (a == (a = c)).

                    а тут как зависит?
                    Ответить
                    • Если вычисляется сначала левая часть a, а потом правая a = c, то будет false.

                      Если вычисляется сначала правая часть a = c, а потом левая a, то будет true.

                      Мутабельные переменные такие мутабельные.
                      Ответить
                  • А, ну тут все логично - старое значение b сравнивается с wotafack. Или не логично? Короче, не зря в питоне = не возвращает значение.

                    Можно в этом вашем js посмотреть на дизассемблер?
                    Ответить
                    • > Короче, не зря в питоне = не возвращает значение.
                      Да, огромный плюс, кстати. И ++ выпилен.

                      > А, ну тут все логично - старое значение b сравнивается с wotafack.
                      Да, всё верно.
                      Ответить
                      • >> Да, огромный плюс, кстати. И ++ выпилен.
                        >>

                        Плюс заключается в том, что ты не можешь писать как мудак, даже если очень хочешь? Это не плюс питона, это минус программиста на си
                        Ответить
                        • > ты не можешь писать как мудак, даже если очень хочешь
                          Ну дык почти весь питон в таком стиле выдержан.
                          Ответить
                          • >Ну дык почти весь питон в таком стиле выдержан.
                            Интересно, где еще? В языке с ДТ в ногу себе выстрелить гораздо проще чем в со статической.
                            Ответить
                            • > В языке с ДТ в ногу себе выстрелить гораздо проще чем в со статической.
                              Хе-хе. Ты просто не писал на крестах.
                              Ответить
                                • Жаба типобезопасная
                                  Плюсы типо безопасные


                                  В жабе нет и 10ой части выстрелов в ногу, что есть в плюсах
                                  Ответить
            • > то что в скобках должно исполняться первым

              Ок...

              (a = Math) == (a = Phys)

              Какие скобки должны выполняться первыми?
              Ответить
              • в твоем примере скобки были только с одной стороны. и у топикстартера также

                >Какие скобки должны выполняться первыми?
                приоритет операций одинаковый, следовательно используем очередность операций для конекретного языка. я подозреваю что у джавкскрипта это слева направо
                Ответить
    • приоритет левой и правой частей сравнения одинаковый вне зависимости от скобок
      Ответить
  • Как в js посмотреть во что компилируется код?
    Ответить
    • Э... Он же интерпретируемый, не?

      Ну а если ты юзаешь какой то компилятор js для своих нужд, то он должен выдавай файлик, там и смотри
      Ответить
      • JS компилируется, как и Java. Но, в отличие от Java, нет стандарта на байткод. У разных движков байткод может быть разным.
        Ответить

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

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

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


    8