Почему эта унарная функция в другой функции javascript? - PullRequest
3 голосов
/ 23 мая 2019

У меня есть некоторый javascript, который обновил предыдущий разработчик.Похоже, что они обернули код внутри функции с другой функцией с префиксом «+».После некоторого исследования другой пост SO упомянул, что он используется для обработки внутренней следующей функции как выражения, но я не уверен, какова цель этого в этом контексте.

Прежде

onCartClick: function() {
    $(this).parent().parent().find('.cart-loader').removeClass('hide');
    $('.cart-text').removeClass('hide');}, 4000);
}

После

onCartClick: function() {
    +function($) {
        $(this).parent().parent().find('.cart-loader').removeClass('hide');
        $('.cart-text').removeClass('hide');}, 4000);
    } (jQuery);
}

Я пытаюсь понять, почему было внесено изменение, и не могу связаться с предыдущим разработчиком, чтобы выяснить их намерения.Код «До» работает как функция «this» возвращает элемент, получивший событие.Код «After» не работает, поскольку функция «this» возвращает объект окна.

Есть ли веская причина для попыток сделать что-либо таким образом?

1 Ответ

4 голосов
/ 23 мая 2019

Без + до того, как это будет считаться объявлением функции. Если вы видите, что имени нет, значит, код выдаст ошибку. Нам нужно сделать это выражение, используя +. Вы также используете другие операторы, такие как !.

Это еще один способ использования IIFE. Код почти такой же, как

onCartClick: function() {
    (function($) {
        $(this).parent().parent().find('.cart-loader').removeClass('hide');
        $('.cart-text').removeClass('hide');}, 4000);
    }) (jQuery);
}
...