• Вызов "obj.func()" или" (obj.func)()", есть ли различия?

    Lynn
    @Lynn
    nginx, js, css
    Именно в таком виде разницы нет. Но, скорее всего такой код встречается в виде (0, obj.func)() или (obj.func || _.noop)()

    И в этих случаях есть разница:

    let obj = {
        func: function() {
            console.log(this === obj);
        }
    };
    
    obj.func(); // -> true
    (obj.func)(); // -> true
    (0, obj.func)(); // -> false
    (obj.func || _.noop)(); // -> false


    https://learn.javascript.ru/object-methods
    Ответ написан
    3 комментария
  • Вызов "obj.func()" или" (obj.func)()", есть ли различия?

    k12th
    @k12th
    console.log(`You're pulling my leg, right?`);
    В данном случае разницы нет и смысла в такой записи нет. Но надо понимать, что делает оператор () (помимо вызова функции, и, очевидно, группировки в арифметических операциях). А делает он вот что: вычисляет выражение и возвращает его. Это позволяет не создавать временные переменные на каждый чих и писать такие вещи:
    (obj1 || obj2).func() // вызывает obj2.func, если obj1 null, undefined, false и т.д.
    
    options || (options = {}) // сделает options пустым объектом, 
    // если он null, undefined, false, часто использовалось для задания значения по умолчанию до ES2015


    Без скобочек получилось бы чуть длиннее:
    var obj = obj1 || obj2;
    obj.func();
    
    if (!options) {
        options = {}
    }
    Ответ написан
    Комментировать
  • Вызов "obj.func()" или" (obj.func)()", есть ли различия?

    miraage
    @miraage
    Старый прогер
    Никакой разницы.
    Второй способ хорош для функционального стиля, когда можно написать что-то вроде
    (obj.func || _.noop)();

    DEMO.
    Ответ написан
    Комментировать
  • Вызов "obj.func()" или" (obj.func)()", есть ли различия?

    obj.func - возвращает функцию

    Верно.

    где используют второй вариант?

    Например, когда нужно, чтобы анонимная функция-обертка выполнилась сразу же после своего объявления. Так часто поступают разработчики плагинов для jQuery, т.к. им необходимо инкапсулировать код плагина, передав в его область видимости некоторые переменные и константы.
    (function($, window, document, undefined) {
        // ...
    })(jQuery, window, document, undefined);
    Ответ написан
    1 комментарий
  • Как работают замкнутые функции?

    alsopub
    @alsopub
    Почему такое не работает

    Вполне работает - codepen.io/anon/pen/VagRNa?editors=1111
    Вы просто никуда результат не выводите.

    Почему не срабатывает alert

    Он находится вне вызываемой функции и вызывается один раз, когда создается замыкание.
    При помощи add() вы вызываете только функцию function () {return counter += 1;} без alert.
    Ответ написан
    9 комментариев
  • Зачем нужны callback функции?

    DeeplessHole
    @DeeplessHole
    Студент матмеха СпбГУ
    Ну смотри, в варианте с коллбэком у тебя может быть несколько функций, которые по-разному выводят логи, которые в зависимости от ситуации можешь передавать параметром в `getInput`. Без них пришлось бы все варианты вывода прописывать в одной функции и выбирать свитчем или иф-элзами.

    Сразу вспомнился пример с компаратором: у тебя написана функция сортировки, которая для сравнения использует коллбэк(наш компаратор), и можно менять направление сортировки(по возрастанию, по убыванию).
    Ответ написан
    Комментировать
  • Зачем нужны callback функции?

    Тем, что ты можешь много разных getInput использовать и при этом использовать разные функции для обработки, указанные вторым аргументом. А, используя первый вариант, одна функция logstuff привязана функции к getInput, и если что-то понадобится изменить, то функцию getInput придётся адаптировать под изменившиеся условия.
    Ответ написан
    3 комментария
  • Зачем нужны callback функции?

    alsopub
    @alsopub
    В данном случае - разницы никакой.
    Если нужно будет устанавливать разные обработчики для данных - появится преимущество.
    То есть если будут вызовы:
    getInput({ name: 'Rich', speciality: 'JavaScript' }, logStuff);
    getInput({ name: 'Rich', speciality: 'JavaScript' }, logOther);
    getInput({ name: 'Rich', speciality: 'JavaScript' }, logToDisk);

    Имхо в данном случае это не совсем callback, это просто передача функции обработки как аргумента.
    Callback, это когда вы вызываете какой-то метод, который когда-нибудь (через несколько секунд например) должен вызывать вашу функцию с результатом.
    Ответ написан
  • Зачем скачивать git?

    @mvsavkin
    Коротко по вопросу: Github это удаленный сервер(origin), их может быть много. Оттуда команда выкачивает проекты(git pull), но в самом начале работы надо склонировать(git clone) и локально работает, после того как что то изменили, изменения добавляются в индекс(git add), фиксируются(коммитятся)(git commit) и отправляются на сервер(git push)
    Если консоль сложна, то SmartGit идеальное решение.
    Ответ написан
    Комментировать
  • Зачем скачивать git?

    @rolege
    git это распределенная система! А gihub это всего лишь одно из хранилищ.
    Ответ написан
    Комментировать
  • Зачем скачивать git?

    ManWithBear
    @ManWithBear
    Swift Adept, Prague
    Похоже вы путаете причину и следствие.
    Github существует, потому что существует git, и является одним из инструментов облегченной и урезанной работы с ним.
    В свою очередь git вообще никак не зависит от github'a, и по сути ничего о нем не знает.
    Ответ написан
    Комментировать
  • За и против Bootstrap?

    @vasIvas
    Bootstrap - это золотые, не разрушаемые магические доспехи. Но для человека ростом 1,2.
    Ответ написан
    Комментировать
  • Как обустроена работа в веб-студии?

    akarin
    @akarin
    Сидят 3 хиспстера в свитерах и пьют кофе. Менеджер ищет на гитхабе что то похожее на свой будущий проект.
    Ответ написан
    Комментировать