-
Comme vous pouvez l'imaginer, il existe de nombreuses façons d'exécuter des fonctions anonymes immédiatement. Pour résumer, il existe trois manières typiques (il existe d'autres manières, veuillez nous le faire savoir) :
Première méthode
(fonction() {
//…
})();
Méthode 2
fonction vide() {
//…
}();
Troisième méthode
~fonction() {
//…
}();
Vous avez peut-être vu la méthode 1 et la méthode 2. Ici, nous expliquons principalement la méthode 3. Avant d'expliquer la troisième méthode, passons maintenant en revue la définition de l'opérateur "~" (négation de bits) dans EMCAScript (page 72 de la cinquième édition), une traduction simple :
Convertissez l'ancienne valeur en un entier de 32 bits en combinant des instructions avec des opérateurs. Exécutez l'instruction après l'opérateur et convertissez la ligne. Le résultat est un entier de 32 bits et est renvoyé.
Comme on peut le comprendre de ce qui précède, en fait, les opérateurs au niveau du bit peuvent immédiatement renvoyer la valeur de l'expression suivante. En fait, d'autres opérateurs au niveau du bit peuvent atteindre cet objectif, par exemple :
!fonction() {
//…
}();
etc. peuvent atteindre notre objectif. Il n'y a donc aucune autre raison d'utiliser "~", c'est juste que le code "a l'air bien" :^)
L'efficacité n'est pas tant l'efficacité de l'exécution de fonctions anonymes de trois manières, mais il vaut mieux analyser directement l'efficacité d'exécution de chaque opérateur. Alors comparons et examinons les définitions de « () » et « void » dans la spécification EMCA.
Opérateurs de groupe (cinquième édition, page 66)
Renvoie le résultat de l'exécution d'une expression
nul (page 70, 5e édition)
La combinaison d'instructions avec des opérateurs renvoie un résultat indéfini
Étant donné que l'opérateur de groupe doit également exécuter l'instruction et renvoyer la valeur renvoyée par le bloc d'instruction, par rapport à void, il y aura plusieurs opérations pour obtenir le bloc d'instruction (bien qu'il ne consomme pas beaucoup de performances), donc dans ce cas les performances Le vide est meilleur que celui de l'opérateur de groupe.
En comparant les deux, la comparaison des performances de la troisième méthode est évidemment inférieure à celle des deux premières. Pour résumer, d'un point de vue grammatical, parmi les trois méthodes de fonctions anonymes ci-dessus, la méthode deux est meilleure que la première, et la méthode trois est la moins efficace.
Résumez et réfléchissez aux avantages entre les trois
La méthode 1 est très courante et sûre, donc personne ne vous reprochera d'utiliser cette méthode. Cependant, les étudiants qui utilisent la méthode 1 peuvent souvent avoir le « problème » d'oublier de faire correspondre les parenthèses (surtout lorsque le bloc d'instructions est très long. , je). je me trompe souvent)
L'utilisation d'opérateurs au niveau du bit pour exécuter des fonctions anonymes est très tendance et est utilisée pour paraître cool. De nombreux IDE (tels que IDEA) et outils de coloration syntaxique ne prennent pas en charge la troisième façon d'écrire.
void est la plus efficace, mais elle semble toujours très lourde par rapport aux deux autres implémentations (juste quelques caractères de plus ?)
Donc
Compte tenu de la quantité de code et de l'efficacité, il est correct d'utiliser la première méthode dans les cas extrêmes où du code supplémentaire doit être enregistré, et d'utiliser la troisième méthode pour donner la priorité à l'efficacité. Ensuite, je voudrais expliquer l'utilisation de la deuxième méthode ici. En fait, la différence d’efficacité entre les trois méthodes est très faible. Il est donc presque intenable d’utiliser cette méthode uniquement en se basant sur l’efficacité.
Le plan spécifique à adopter doit être réfléchi en fonction de la situation réelle. Par exemple, j'utilise souvent la troisième méthode parce que 1. C'est pratique (il suffit d'ajouter un caractère) 2. Faire correspondre les parenthèses lorsque la fonction est longue sera vertigineux 3. C'est cool à utiliser, mais la méthode 3 me fait souvent la regarder Membres de l'équipe de code sont troublés.
Si vous disposez d'un code de base basé sur un framework tel que certaines bibliothèques de classes, l'utilisation de la méthode 1 est la plus sûre et la plus facile à comprendre pour tout le monde, c'est donc le choix le plus sûr.
[Texte original : http://www.gracecode.com/archives/3004/ Très bien, tout le monde peut en tirer des leçons