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

    0

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    var a = ['a', 'b', 'c'];
    var b = ['d', 'e', 'f'];
    b.forEach(item => a.push(item));  // a == ["a", "b", "c", "d", "e", "f"]
    
    // Но:
    var a = ['a', 'b', 'c'];
    var b = ['d', 'e', 'f'];
    b.forEach(a.push.bind(a));  // a == ["a", "b", "c", "d", 0, Array(3), "e", 1, Array(3), "f", 2, Array(3)]

    Кто поймёт, что за хуйня, тому нихуя.

    Запостил: gost, 30 Сентября 2019

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

    • Именно поэтому я за «Python».
      Ответить
    • Все очень просто
      В первом примере ты явно передаешь в push 1 аргумент, а во втором - ты не ограничиваешь арность функции и передаются сразу 3 аргумента: элемент, индекс и исходный массив
      Ответить
      • Поздравляю! Вы отгадали загадку и получаете нихуя.
        Ответить
        • показать все, что скрытоvanished
          Ответить
          • «let» не работает в «Интернет Эксплорере» на «Windows XP».
            Ответить
            • Там и arrow functions не зробят, там и forEachа у массива нема
              Ответить
              • Точно!
                Ответить
              • Именно поэтому guest8 за typescript который можно компилировать во всякое старье вроде ecmascript 3
                Ответить
                • Свежие екмаскирипты тоже можно в старье конпелировать.
                  Ответить
              • Кстати, есть объекты, к которым есть доступ по индексу, но которые при этом чистыми массивами не являются (например, NodeList, DOMTokenList). У них метод forEach в веб-браузерах появился сравнительно недавно. Есть негодяи, которые на своих сайтах уже используют forEach для NodeList, и в некоторых ещё популярных версиях браузеров на таких сайтах ничего не работает. Какой багор )))
                Ответить
              • Выкатил я вчера вечером обновление стока со стрелочной функцией, открываю сток на своей мобильной «Opera» версии года примерно 2015-го, а там вместо комментов — белая страница. Какой багор )))
                Ответить
            • показать все, что скрытоvanished
              Ответить
              • А как ты определил по клочку кода, что переменная константна?
                Ответить
          • Действительно, вот в "Python" обошлись без всяких варос. Именно поэтому я за "Python".
            Ответить
            • А еще в "Python" не надо писать ссаное "a.push.bind(a)". Именно поэтому
              Ответить
              • Кстати да, питоновская фича с авто-биндом очень классная:
                >>> class Petuh:
                ...     def __init__(self, name):
                ...             self.name = name
                ...     def kukareku(self):
                ...             print(self.name, 'Kokoko')
                ...
                >>> petuh1 = Petuh('Petya')
                >>> petuh2 = Petuh('Vasya')
                >>> petuh1.kukareku()
                Petya Kokoko
                >>> petuh2.kukareku()
                Vasya Kokoko
                >>> f = petuh1.kukareku
                >>> f()
                Petya Kokoko
                >>> f = Petuh.kukareku
                >>> f()
                Traceback (most recent call last):
                  File "<stdin>", line 1, in <module>
                TypeError: kukareku() missing 1 required positional argument: 'self'
                >>> f(petuh2)
                Vasya Kokoko
                Ответить

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