Les experts prennent un détour! Cela n'a rien à voir avec la fermeture elle-même, et je ne sais pas comment obtenir le titre, donc je viens de collecter le numéro. J'espère que je vais me pardonner!
Aujourd'hui, un ami qui vient d'apprendre JS m'a donné un morceau de code et m'a demandé pourquoi la méthode n'était pas exécutée. Le code est le suivant:
La copie de code est la suivante:
fonction makefunc (x) {
return function () {
retour x;
}
}
alerte (MakeFunc (0));
En fait, ce n'est pas que ce n'est pas qu'il ne s'exécute pas, mais que l'ami signifie que l'alerte doit être "0", pas la fonction () {return x;}.
Ce n'est pas que le script est mal écrit, c'est simplement qu'il ne comprend pas le retour, quitte de la fonction actuelle et renvoie une valeur de cette fonction. Si la fonction retournée est une fonction, la fonction retournée elle-même est également la fonction elle-même.
Vous pouvez modifier le code ci-dessus comme celui-ci, qui est alerte (MakeFunc (0) ()):
La copie de code est la suivante:
fonction makefunc (x) {
return (function () {
retour x;
}) ();
}
alert (MakeFunc (0) ());
Si vous souhaitez renvoyer le résultat de l'exécution de la fonction, vous devez d'abord laisser la fonction exécuter, par exemple:
La copie de code est la suivante:
fonction makefunc (x) {
return (function () {
retour x;
}) ();
}
alerte (MakeFunc (0));
Voici une fonction anonyme.
La copie de code est la suivante:
(fonction (){
retour x;
}) ();
À l'intérieur du premier support se trouve une fonction anonyme, le deuxième support est utilisé pour appeler la fonction anonyme, et vous pouvez passer dans les paramètres requis dans le deuxième support. Par exemple:
La copie de code est la suivante:
(fonction (x, y) {
alerte (x + y);
})(vingt-trois );