Je vois cette syntaxe dans quelques bibliothèques maintenant et je me demande quel en est l'intérêt. (note : je suis bien conscient des fermetures et de ce que fait le code, je ne m'intéresse qu'aux différences syntaxiques).
!function(){
// do stuff
}();
En lieu et place de la plus courante
(function(){
// do stuff
})();
pour les fonctions anonymes qui s'invoquent elles-mêmes.
Je me pose quelques questions. Tout d'abord, qu'est-ce qui permet à l'exemple du haut de fonctionner réellement ? Pourquoi le bang est-il nécessaire pour que cette déclaration soit syntaxiquement correcte ? On me dit également que +
et je suis sûr qu'il y en a d'autres, à la place des !
Deuxièmement, quel est l'avantage ? Tout ce que je peux dire, c'est qu'il permet d'économiser un seul caractère, mais je ne peux pas imaginer qu'il s'agisse d'un avantage si important qu'il attire de nombreux adeptes. Y a-t-il un autre avantage qui m'échappe ?
La seule autre différence que je vois serait la valeur de retour de la fonction qui s'invoque elle-même, mais dans ces deux exemples, nous ne nous soucions pas vraiment de la valeur de retour de la fonction puisqu'elle n'est utilisée que pour créer une fermeture. Quelqu'un peut-il me dire pourquoi on pourrait utiliser la première syntaxe ?