@websiteserf

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

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

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


Конструкцию

function($){ }($);

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

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


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

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

Войти через центр авторизации
Похожие вопросы
Artezio Нижний Новгород
от 130 000 до 180 000 ₽
Artezio Москва
от 160 000 до 220 000 ₽
XPOWER Одесса
от 3 000 до 5 500 $