@websiteserf

Что означает конструкция (function($){$(function(){ })})($)?

Недавно обнаружил на некоем плагине JQ конструкцию

(function($){$(function(){
	$('select').styleThis();
})})($)


Конструкцию

function($){ }($);

Я понимаю, но не пойму конструкцию внутри её (выше)
  • Вопрос задан
  • 13687 просмотров
Решения вопроса 1
GeneMoss
@GeneMoss
void
$(function(){}) — это мы запускаем действие в момент загрузки страницы. А оборачиваем в анонимную функцию (function($){ })($);, чтобы избежать конфликта имен с $.

Автор плагина предусмотрел случай, когда доллар занят под другую библиотеку/функцию/переменную. Чтобы избежать конфликта имен, достаточно будет заменить доллар на jQuery, вот так (хотя сразу так и нужно было писать):
(function($){$(function(){
    $('select').styleThis();
})})(jQuery);


Т.е. передав один раз нужный параметр, нам нет нужды переписывать весь плагин.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
conf
@conf
Ruby developer
А если внимательно прочитать документацию (ссылку на которую любезно предоставил @virpool), то можно заметить, что эту мозговыносящую конструкцию можно заменить вот этим:
jQuery(function($) {
// $ is aliased to jQuery in this function
});
Ответ написан
Вызов функции $() с аргумментом в виде анонимной функции, внутри замыкания (closure) в которое передаётся $. Весь этот изврат нужен для того что бы не было проблем со сборкой мусора... на практике в JQuery это просто выполнение функции по событию onDocumentReady.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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