Какая польза от включения функции jquery в закрытие?

Привет, я был занят, пытаясь вывести свои знания JQuery на новый уровень. Пока что я думаю, что понял все, но поскольку я рискнул перейти к более сложным учебникам. Я заметил несколько случаев, когда процедура JQuery была заключена в закрытие (см. ниже), однако меня смущает то, что она передает $ и возвращает JQuery. У меня вопрос почему? что я могу сделать с возвращенным JQuery?

Я был бы очень признателен за любой свет, который люди могут пролить на это для меня.

(function($){
  $(document).ready(function(){
    var arr = $.map($("LI"), function(item, index){
      while (index < 3)
      {
        return $(item).html();
      }
      return null;
    });
    $(document.body).append("<span>The first three authors are: " +
      arr.join(", ") + "</span>");
  });
})(jQuery);

Заранее благодарю.

Роб

8
задан yfeldblum 26 August 2010 в 21:25
поделиться

2 ответа

Это самовызывающаяся анонимная функция (безымянная функция, которая объявляется и немедленно выполняется), которая принимает один аргумент, который присваивается параметру $. В качестве аргумента передается значение jQuery, функция jQuery.

Это сделано для того, чтобы сокращение $ можно было использовать внутри области действия функции для обозначения jQuery. Поскольку весь код внутри функции находится в области действия функции, это хороший шаблон для себя, содержащий код и не загрязняющий глобальное пространство имен.

Это также хороший шаблон, позволяющий использовать сокращение $ для jQuery внутри функции — может быть так, что сокращение $ (window. $) назначается что-то еще, что может случиться, если вы используете несколько библиотек на одной странице. Используя этот шаблон, вы по-прежнему можете использовать $ для ссылки на объект jQuery в функции для удобства и лаконичности.

8
ответ дан 5 December 2019 в 12:53
поделиться

Если вы пишете плагин, используйте

(function($) {
  //stuff that uses the jquery lib using $
})(jQuery);

Это эквивалентно

var __myf = function($) {
  //stuff that uses the jquery lib using $
};
__myf(jQuery);

Если вы пишете код страницы, используйте

jQuery(function($) {
  //stuff that uses the jquery lib using $
});

Здесь jQuery будет вызывать вашу функцию, когда он готов (когда документ загружен) и передаст себя в качестве первого аргумента вашей функции.

4
ответ дан 5 December 2019 в 12:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: