Cela ressemble à une mauvaise pratique me (nommant une fonction de fermeture), car il peut provoquer des incohérences de navigateur.
Prenez le code suivant par exemple
(function foo() {
alert('bar');
})();
foo();
Dans Internet Explorer, vous obtiendrez 2 alertes, car il crée en fait la fonction en fonction globale appelée foo
.
Dans Chrome, il ne préviendra une fois, et foo
n'a pas été déclarée à l'échelle mondiale, de sorte que vous obtenez une erreur javascript foo is not defined
Normalement, vous ne seriez pas donner un nom à une fonction de fermeture
(function() { // notice you don't see foo anymore
alert('bar');
})();
et de http://stackoverflow.com/questions/2897987/why-would-one-write-global-code-inside-a-function-definition-call-pair – nico
et un autre http: // stackoverflow.com/questions/592396/what-is-the-purpose-of-a-self-executing-function-in-javascript – Anurag
Sa question est différente de celles-ci, car il a un nom sur sa fonction de fermeture, créant une complète Différent ensemble de problèmes (bien que, il peut ou ne peut pas avoir l'intention de) –