(… ()) vs. (…) () dans les fermetures javascript

Je sais que c'est stupide, mais il y a une différence entre ceci:

(function() { var foo = 'bar'; })(); 

et ça?

 (function() { var foo = 'bar'; }()); 

JSLint nous dit de Move the invocation into the parens that contain the function , mais je n'en ai pas besoin.

Edit: Les réponses sont trop cool. ~function Function , l'alternative JSHint avec la préférence de jQuery pour (/***/)(); Et l'explication de Crockford! Je pensais que j'allais simplement obtenir un type de réponse "ils sont les mêmes".
Vos gars décident le meilleur par le biais de upvotes et je le marque.

    Il n'y a pas de différence. Les deux sont des moyens valides pour que l'analyseur JavaScript traite votre fonction comme une expression au lieu d'une déclaration .

    Notez que + et ! Fonctionnera également, et sera parfois utilisé par les minifiers pour sauver un caractère de taille:

     +function() { var foo = 'bar'; }(); !function() { var foo = 'bar'; }(); 

    MODIFIER

    Comme l'indique @copy, pour l'exhaustivité, ~ et - fonctionnera également.

     -function() { var foo = 'bar'; }(); ~function() { var foo = 'bar'; }(); 

    Cette violation de JSLint existe parce que Douglas Crockford dit que la version de parenthèses extérieures ressemble à "boules de chien".

    Vous pouvez l'entendre discuter de cette vidéo :

    Je pense que cela a l'air maladroit, parce que ce dont nous parlons, c'est l'invocation totale, mais nous avons eu ces choses en dehors de là, en regardant sorta comme … boules de chien.

    Il suggère que les parenthèses internes aident le lecteur à comprendre que l'énoncé complet est une expression de fonction plutôt qu'une déclaration.

    Non, je ne crois pas qu'il y ait de différence. Je préfère personnellement l'ancien (et jQuery et al. Semblent d'accord), mais ils fonctionnent tous les deux dans tous les moteurs que j'ai testés.

    Aussi, JSLint est un peu trop sévère parfois. JSHint pourrait être un peu mieux à cet égard.