Я заметил в JQuery, что следующая структура кода используется
(function(){var l=this,g,y=l.jQuery,p=l.$,...})()
Который, кажется, создает функцию и называет ее.
Каково преимущество проявления этого подхода по сравнению с наличием содержания встроенной функции?
Создает закрытие для предотвращения конфликтов с другими частями кода. См. Это:
Особенно удобно, если у вас есть другая библиотека, использующая метод $ ()
, и вы должны сохранить возможность также использовать это с jQuery. Затем вы можете создать закрытие, например:
(function($) {
// $() is available here
})(jQuery);
Он создает область для переменных, в частности, определяя $
, например, для привязки к jQuery
, независимо от того, какие другие библиотеки перезаписывают его. Думайте об этом как об анонимном пространстве имен.
Это похоже на:
var foo = function(){var l=this,g,y=l.jQuery,p=l.$,...};
foo();
Но более простой и не требует глобальной переменной.
Это позволяет иметь локальные переменные и операции внутри функции, вместо того, чтобы преобразовывать их в глобальные.
С помощью самовызывающейся анонимной функции вы создаете локальную область видимости, это очень эффективно, и она напрямую вызывает сама себя.
Вы можете прочитать об этом здесь