Fermetures JavaScript vs fonctions anonymes
En JavaScript, une fermeture se produit lorsqu'une fonction interne a accès aux variables de la portée externe, même après la fonction externe a terminé son exécution. De nombreuses fonctions en JavaScript sont considérées comme des fermetures, mais seul un sous-ensemble spécifique présente théoriquement un intérêt particulier.
Cas 1 : Code d'un ami
<code class="js">(function f() { var i2 = i; setTimeout(function g() { console.log(i2); }, 1000); })();</code>
Cas 2 : Votre code
<code class="js">setTimeout((function f(i2) { return function g() { console.log(i2); }; })(i), 1000);</code>
Conclusion
Par conséquent, dans les deux solutions fournies, la fonction interne g est une fermeture, mais pas les extérieurs. Cela démontre que même s’ils obtiennent le même résultat, ils le font par des mécanismes différents.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!