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

    +1

    1. 1
    2. 2
    3. 3
    4. 4
    function PhotoDetail(uid, id, key) {
        var uid = uid;
        var id = id;
        var key = key;

    No comments

    Запостил: gorsash, 26 Декабря 2016

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

    • Может, это перемещает переменные в какой-нибудь контекст замыкания или что-то в этом роде.
      Забавен набор аргументов: идентификатор, идентификатор, идентификатор.
      Ответить
      • А разве в замыканиях что-то поменяется, кроме this? Вот вся функция:

        function PhotoDetail(uid,id,key)
        {
        var uid = uid;
        var id = id;
        var key = key;
        var lastid = $('#border_val_photo').val();

        $.ajax({
        type: "GET",
        url: "photo_detail.php?uid="+uid+"&id="+i d,
        success: function(msg){
        if(lastid)
        {
        document.getElementById("td_"+lastid).st yle.borderColor="#cbdbea";
        }
        document.getElementById("td_"+key).style .borderColor="#FF0000";
        $('#border_val_photo').val(key);
        $('#photo_detail').html(msg);
        PhotoAlbumDetail(uid,id);
        }
        });
        }
        Ответить
        • а вот это уже говнокод. И jQuery и pure js в кучу.
          Ответить
      • Вроди и без локальных переменных всё работает

        function test(a) {

        setTimeout(function() {
        console.log(a);
        }, 1000);

        }

        test(1);
        test(2);
        test(3);
        Ответить
      • Насколько я понимаю, имеет смысл делать копии переменных только, если они потом меняются в самой функции
        Ответить
      • Аргументы же и так как надо будут. Разве что var that = this нужно в некоторых случаях делать.
        Ответить
      • Не перемещает :)
        Ответить
    • Лол. Говнокод обучающий. Не знал, что так можно.

      Меня деды обучили примером
      var x = 1;
      function(){
         alert(x); // 1
      }
      function(){
         alert(x); // undefined
         if(false) { var x = 0; }
      }


      Да и в том же интерпретаторе, где ОП-код работает,
      var x = 1;
      function(){
        var x = x;
        alert(x); //undefied
      }
      Ответить
      • Ну это немного из другой оперы. Тут глобальные переменные
        Ответить
        • Переменные из внешнего контекста!
          Ответить
        • Впрочем, из той же оперы.

          Определения локальных переменных как бы вставляются в начало функции, демонстрируя единственно логичные следствия:
          function(x) { var y; } -> function var x, y (x) {}
          function(x) { y; if(0) { var y; } } -> function var x, y (x) { y; }
          function(x) { var x = x } -> function var x (x) { x = x; }

          Я раньше думал, что они только в начало тела вылезают.
          Ответить
          • Объявления функций и переменных всплывают к началу области видимости (которая и есть функция). Присваивания остаются на месте. Стандартный вопрос - что упадёт?

            foo();
            function foo() {}

            или

            foo();
            var foo = function() {};
            Ответить
      • Джаваскрипт такой непредсказуемый, круче плюсов
        Ответить
      • обсуждали же вроде какое-то время назад, что джаваскрипт работает в два прохода, и на первом выдергивает все объявления локальных переменных
        Ответить
        • и в очередной раз я отвечаю, неправильно поняв суть исходного комментария
          Ответить
      • Ну ты тупой! Уже джва года как знал же: http://govnokod.ru/16497#comment242907
        Ответить
        • не стыдно не знать джаваскрипта, стыдно его знать
          Ответить
          • Не стыдно знать экмаскрипт, стыдно этим гордиться.
            Ответить
            • Не стыдно знать экмаскрипт, стыдно знать что-то еще и писать на экмаскрипте
              Ответить
              • А если что-то еще - это пыха?
                Ответить
                • От пыхи и жс не зарекаются.
                  Ответить
                  • не заикаются
                    Ответить
                  • Конечно. Кризис же в стране. Вдруг придется разнорабочим поработать?
                    Ответить
                    • > разнорабочим
                      ээ, теперь это называется фулл-стек
                      Ответить
                      • Фулл-стек по водоснабжению дома: рытьё траншеи, прокладка полиэтиленовых труб, установка фитингов, монтаж сантехники, разработка водоотведения.
                        Ответить
                        • А я, кстати, знаю таких вот фулл-стек мастеров, и обычно не очень им доверяю.

                          Чуваки которые одновременно делают электрику, сантехнику, лоджию, потолки, прокладывают телефон и клеют обои обычно делают это всё одинаково хуёво.
                          Ответить
                          • Два стакана стекломоя этому господину прорабу.

                            Вот кстати у меня такое чувство, что все "евроремонты" двухтысячных (или десятых, зависит от географии) - это в немалой степени заслуга тех самых, которые как-то с гипсокартоном умеют работать, как-то с плиткой, как-то с полами... за исключением знания тех самых маленьких частностей, которые не дают отделке превратиться в говно. Зато дёшево.
                            Ответить

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