Что означает (jQuery) после (function( $ )?

(function( $ ) {
  $.fn.myPlugin = function() {
      // Код плагина
  };
})(jQuery);

Что тут означает (jQuery) в конце? Зачем он нужен?
  • Вопрос задан
  • 5952 просмотра
Решения вопроса 1
delphinpro
@delphinpro Куратор тега JavaScript
frontend developer
(function( ) {
})();

Вот эта конструкция называется "анонимная самовызываемая функция".

То есть, тут два действия:
Объявление анонимной функции
function( ) {
}

и сразу ее вызов
()()
Первые скобки это синтаксический приём для вызова анонимной функции. Есть и другие методы. Например
+function(){}()
Вторые скобки - это собственно вызов функции и при необходимости передача параметра (обычный вызов же)

()(jQuery) — в параметре передается jQuery

function($){} — а тут этот параметр объявлен и используется

(function($){})(jQuery) — итого, объявили анонимную функцию, и вызвали ее, передав параметром объект jQuery

Например, доллар у вас используется другой библиотекой, пусть MooTools.
Тогда вы запускаете jQuery в безконфликтном режиме

jQuery.noConflict();

Это значит, что доллар использоваться не будет, и объект будет доступен только по ссылке jQuery.

Но для удобства вы можете использовать анонимную функцию и безопасно использовать внутри неё переменную доллара

(function($){
  $('.slider').slick();
})(jQuery);


Чтобы стало совсем понятно, конструкцию можно переписать без анонимной функции

var myFunc = function($){
 // some code
}

myFunc(jQuery);
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@bm1
Скобки которые идут сразу после функции означают немедленный вызов функции и в качестве аргумента ей передаётся объект jQuery, можно это представить так
function myFunc( $ ) {
  $.fn.myPlugin = function() {
      // Код плагина
  };
}

myFunc(jQuery); // Вызываем функцию и передаём ей jQuery, теперь внутри функции мы можем спокойно обращаться к '$' и не бояться, что кто-то его переопределил
Ответ написан
Комментировать
@Batlab
PHP Senior | Python Middle | JS Junior
Здесь есть анонимная функция, которая принимает аргумент $ (который позже используется как обычный Jquery)
Далее эта функция самовызывается (это называется замыканием, если не ошибаюсь), и туда передается аргументом обьект Jquery.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы