Они используют замыкания .
Краткое объяснение: поскольку JS использует область видимости на уровне функций, вы можете выполнять множество действий внутри функции, и она останется в этой области. Это полезно для вызова кода, который не связывается с глобальным пространством имен. Это также позволяет создавать закрытые переменные - если вы объявляете переменную внутри анонимной функции и выполняете ее немедленно, только другой код внутри анонимной функции может получить доступ к этой переменной.
Например, предположим, я хочу создать глобальный генератор уникальных идентификаторов. Можно сделать код, подобный этому:
var counter = 0;
var genId = function()
{
counter = counter + 1;
return counter;
}
Однако теперь любой может связываться с counter , и я теперь загрязнил глобальное пространство имен двумя переменными ( counter и genId ).
Вместо этого я мог бы использовать анонимную функцию для генерации функции счетчика:
var genId = function()
{
var counter = 0;
var genIdImpl = function()
{
counter = counter + 1;
return counter;
}
return genIdImpl;
}();
Теперь у меня есть только одна переменная в глобальном пространстве имен, что является преимуществом. Что еще более важно, переменная счетчика теперь безопасна для изменения - она существует только в области действия анонимной функции, и поэтому только функция genIdImpl (которая была определена в той же области действия) может получить к ней доступ.
Похоже, что в примере кода YUI они просто хотят выполнить код, который вообще не загрязняет глобальное пространство имен.