J'ai vraiment appris les fermetures encore et encore. JS est profond et profond, et j'ai l'impression d'avoir gagné quelque chose de nouveau à chaque fois que je l'apprends. Je crois que la fermeture est essentielle lorsque tout le monde encapsule des plug-ins front-end. Personnellement, je pense que le véritable avantage des fermetures n'est pas seulement l'encapsulation, mais aussi l'encapsulation. Elle peut apporter nos propres méthodes privées et est flexible et pratique dans l'appel. Elle gardera également les objets externes de votre code propres et bien rangés.
Allons droit au but
Wikipédia définit la fermeture JS comme ceci : En informatique, la fermeture (anglais : Closure), également connue sous le nom de fermeture lexicale (Lexical Closure) ou fermeture de fonction (function Closures) sont des fonctions qui font référence à des variables libres. La variable libre référencée restera avec la fonction même après avoir quitté l'environnement dans lequel elle a été créée. Il existe donc une autre façon de dire qu’une fermeture est une entité composée d’une fonction et de son environnement de référence associé. Les fermetures peuvent avoir plusieurs instances au moment de l'exécution, et différents environnements de référence et la même combinaison de fonctions peuvent produire différentes instances.
En termes simples, une fermeture est différente d'une fonction générale. Elle permet à une fonction d'accéder toujours à des variables non locales en dehors de la portée de l'appel immédiat. Je voudrais également dire que la syntaxe des fermetures rend votre code plus dynamique. Le morceau de code suivant peut vous faire ressentir quelque chose.
<script> (function () { var userToken = "this is my token"; var someConfig = "opening some function"; var privateValue = "private"; var publicValue = "public"; var appObj = {}; function myPrivateFunc() { alert(privateValue) } appObj.getUserToken = function () { //some logic userToken += " after some inner logic"; return userToken; } appObj.publicVal = publicValue; window.application = appObj; }());//立即执行 console.log(application.getUserToken());//this is my token after some inner logic console.log(application.publicVal);//public console.log(application.privateValue); //undefined application.myPrivateFunc(); //error </script>
J'attache appObj à la fenêtre. J'aime généralement définir un objet global nommé application, qui représente l'ensemble de l'application. objet de niveau supérieur, vous pouvez exposer de nombreuses méthodes d'opération publiques au monde extérieur, et vous pouvez également y effectuer des traitements privés pour empêcher les appels externes de causer des problèmes. Sous l'objet d'application "de niveau supérieur" défini, vous pouvez également définir les variables globales que vous devez contenir, afin d'éviter l'impact des variables globales ordinaires sur l'application, et dans la fermeture que vous avez définie, via des objets exposés au à l'extérieur, j'ai toujours pensé qu'il était trop honteux de définir une variable globale JS avec désinvolture.
Avec la méthode d'écriture de clôture et les puissantes invites intelligentes de VS, vous vous sentirez extrêmement à l'aise. Ci-dessous, j'ai joint une autre méthode
(function () { var baseUrl = "www.cnblogs.com/tdws/"; application.getBaseUrl = function () { return baseUrl; } }()); console.log(application.getBaseUrl());//www.cnblogs.com/tdws/
Écrivez-la à la fin
Ne pas vous pensez que les variables sont conservées et qu'une série de méthodes get sont exposées. N'est-ce pas très dynamique ? ╮(╯-╰)╭ Écartez les mains...
Bien sûr, les fermetures doivent également être utilisées. de manière appropriée par vous, afin de ne pas provoquer de références circulaires, car cela entraînerait une fuite de mémoire. Ne faites pas de fermetures inutiles, qui gaspilleraient votre espace, car la fermeture ne se desserrera pas. N'utilisez pas de fermetures partout car cela augmenterait la complexité de votre code.
Ce qui précède est l'intégralité du contenu de cet article. J'espère que le contenu de cet article pourra apporter de l'aide à l'étude ou au travail de chacun. J'espère également soutenir le site Web PHP chinois !
Pour des articles plus détaillés sur les fermetures et les applications JavaScript, veuillez faire attention au site Web PHP chinois !