Voici la fonction anonyme de JS. Quelles sont les différences entre ces trois formes ? Quelles sont les caractéristiques de chacune ?
// 形式1
(function(a){
console.log(a);
})(33)
// 形式2
!function(){
console.log(2222222222)
}()
// 形式3
(function(a){
console.log(a);
}(100))
Il n'y a en fait aucune différence essentielle entre ces trois façons d'écrire. Elles sont toutes destinées au compilateur (interprète) pour traiter function(a){ console.log(a) } et () dans leur ensemble pour l'exécution. C'est probablement plutôt une différence d'habitudes. Personnellement, je préfère la première, car elle est logique. Certaines personnes aiment la deuxième méthode, utiliser () pour entourer l'intégralité de l'appel de fonction. Cela peut indiquer plus directement que ce code est un tout. J'ai entendu dire que les étrangers aiment l'utiliser ! Ou vide
Le premier est une manière courante d'auto-exécuter des fonctions. Ce qui est placé entre parenthèses est le corps de la fonction lui-même, ce qui signifie que la définition de la fonction est exécutée et qu'une fonction est renvoyée. Les parenthèses suivantes indiquent que les paramètres sont transmis et que la fonction est renvoyée. la fonction est exécutée.
Les deuxième et troisième méthodes sont en fait les mêmes.Elles utilisent
!
和括号
pour "envelopper" le corps de la fonction et ajouter la partie paramètre, ce qui signifie exécuter ce bloc de code, le nom de la fonction peut être omis.La différence entre la deuxième et la troisième méthode est que la première n'a pas de paramètres et renvoie une valeur booléenne après avoir annulé le résultat de l'exécution de la fonction, tandis que la seconde a des paramètres et renvoie la valeur de retour de la fonction par défaut.
Le premier court le plus vite
Les deux derniers sont magnifiques