В чем преимущество использования (function () {...}) () в JavaScript - PullRequest
9 голосов
/ 10 февраля 2010

Я заметил в JQuery, что используется следующая структура кода

(function(){var l=this,g,y=l.jQuery,p=l.$,...})()

Который, кажется, создает функцию и вызывает ее.

В чем преимущество использования этого подхода по сравнению с включением содержимого функции?

Ответы [ 5 ]

7 голосов
/ 10 февраля 2010

Создает закрытие для предотвращения конфликтов с другими частями кода. Смотрите это:

Особенно удобно, если у вас есть какая-то другая библиотека, использующая метод $(), и вы должны сохранить возможность использовать ее также с jQuery. Затем вы можете создать замыкание, например:

(function($) {
    // $() is available here
})(jQuery);
4 голосов
/ 10 февраля 2010

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

1 голос
/ 10 февраля 2010

С помощью самовывозной анонимной функции вы создаете локальную область, она очень эффективна и сама вызывает себя.

Вы можете прочитать об этом здесь

0 голосов
/ 10 февраля 2010

Это позволяет иметь локальные переменные и операции внутри функции, вместо того, чтобы преобразовывать их в глобальные.

0 голосов
/ 10 февраля 2010

Это так же, как:

var foo = function(){var l=this,g,y=l.jQuery,p=l.$,...};
foo();

Но более просто и не нужно глобальной переменной.

...