Il s'agit de créer une nouvelle portée (pour éviter de polluer le parent). Étonnamment (pour les débutants familiers avec les langages C-like), JavaScript ne crée pas une nouvelle portée lorsque vous utilisez des accolades seul:
{
var a = "foo";
}
// a still == "foo".
(function() {
var b = "bar";
})();
// b doesn't exist.
Cependant, les fonctions créent toujours une nouvelle portée. Grâce aux fermetures de JavaScript, les variables existantes des portées parentales sont automatiquement placées (fermées) dans la fonction anonyme. Ainsi, dans les cas (comme dans la question) où la fonction anonyme est utilisée nulle part ailleurs (puisqu'elle n'est jamais assignée), elle agit essentiellement comme une accolade de style C.
Une question similaire récente: http://stackoverflow.com/questions/3082149/javascript-why-use-an-anonymous-functionhere –