Основная цель самовыполняющейся анонимной функции - заключить все в частное пространство имен, то есть любые объявленные переменные не загрязняют глобальное пространство имен, в основном как песочница.
var test = 1;
test
приведет к загрязнению глобального пространства имен, будет установлено window.test.
(function() {
var test = 1; alert( test );
})();
window.test не определен, потому что он находится в нашей частной песочнице.
Это "защищает" глобальное пространство имен от загрязнения.
(function() {
var something = "a thing";
// ...
if (something != "a thing") alert("help!");
// ...
function utility(a, b) {
// ...
};
// ...
})();
Теперь, все эти временные переменные и функции защищены внутри этой внешней отбрасываемой функции. Код внутри нее может использовать их, но глобальное пространство имен остается чистым и свободным от грязных, нежелательных переменных.
Глобальное пространство имен - это ценный ресурс. Мы все должны осознавать его важность для себя и, особенно, для наших детей.