Maison >interface Web >js tutoriel >Fermetures dans les astuces JavaScript_javascript

Fermetures dans les astuces JavaScript_javascript

WBOY
WBOYoriginal
2016-05-16 15:13:521264parcourir

1. Qu'est-ce que la fermeture

Fermeture, l'explication officielle de la fermeture est : une expression (généralement une fonction) qui a de nombreuses variables et un environnement lié à ces variables, donc ces variables font également partie de l'expression.

En termes simples, Javascript permet l'utilisation de fonctions internes --- c'est-à-dire que les définitions de fonction et les expressions de fonction sont situées dans le corps de fonction d'une autre fonction. De plus, ces fonctions internes ont accès à toutes les variables locales, paramètres et autres fonctions internes déclarées dans la fonction externe dans laquelle elles existent. Une fermeture est formée lorsqu'une de ces fonctions internes est appelée en dehors de la fonction externe qui les contient.

Caractéristiques des fermetures

1 fonction fonction imbriquée

2 paramètres et variables externes peuvent être référencés à l'intérieur de la fonction

3 Les paramètres et variables ne seront pas recyclés par le mécanisme de garbage collection

Une fois la fonction générale exécutée, l'objet actif local est détruit et seule la portée globale est enregistrée dans la mémoire. Mais la situation des fermetures est différente !

function fn(){
var a = ;
function fn(){
//可以访问fn中定义的a值
alert( a++ );
}
fn();
}
fn(); //
fn(); // 
function fn(){
var a = ;
function fn(){
//可以访问fn中定义的a值
  alert( a++ );
}
return fn;//
}
var f = fn();
f(); // 执行完后a还在内存中
f(); //
f = null; //a被回收

Ce qui précède est l'introduction de l'éditeur aux fermetures en JavaScript. J'espère que cela vous sera utile !

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn