JavaScript fermetures
variables JavaScript peuvent être variables locales ou globales.
Les variables privées peuvent être utilisées fermeture.
Variables globales
La fonction peut accéder à des variables définies par les fonctions internes, telles que ?:
La fonction peut également être accessible en dehors des fonctions définies par des variables telles que:
Un exemple de l'arrière, a est une variable globale.
Dans la page Web appartiennent à l'objet variable globale de la fenêtre.
Les variables globales peuvent être utilisées dans tous les scripts sur la page.
Dans le premier cas, a est une variable locale.
Les variables locales ne peuvent être utilisées pour définir son fonctionnement interne. Pour toute autre fonction ou le code de script ne sont pas disponibles.
Même les variables globales et locales du même nom, ils sont aussi deux variables différentes. Modifier un, il ne sera pas affecter la valeur de l'autre.
Si vous ne déclarez pas une variable en utilisant le mot - clé var, alors il est une variable globale, même si elle est définie dans la fonction. |
cycle de vie variable
Portée des variables globales sont globales, qui est, tout au long du programme JavaScript, les variables globales sont partout.
Dans la variable déclarée dans une fonction, ne fonctionne que dans la fonction. Ces variables sont locales, de portée locale; paramètre de la fonction est localisée, seulement dans le travail de la fonction.
Compteur Dilemma
Si vous voulez imaginer quelques statistiques numériques, et les compteurs sont disponibles dans toutes les fonctions.
Vous pouvez utiliser des variables globales, fonction définit le compteur est incrémenté:
Exemples
fonction add () {
compteur + = 1;
}
ajouter ();
ajouter ();
ajouter ();
// Le compteur est maintenant 3
Essayez »
Le changement de valeur du compteur est survenu dans la mise en œuvre de la fonction add ().
Mais la question est, tout script sur la page peut changer le compteur, même s'il n'y a pas d'appel pour ajouter la fonction ().
Si je déclare une fonction dans le compteur, sinon appeler la fonction ne modifiera pas la valeur du compteur:
Exemples
var compteur = 0;
compteur + = 1;
}
ajouter ();
ajouter ();
ajouter ();
// L'intention est à la sortie 3, mais il n'a pas, la sortie est 1!
Essayez »
Le code ci-dessus ne sortira pas correctement, chaque fois que je prends à ajouter la fonction (), le compteur est mis à 1.
fonction inline JavaScript peut résoudre ce problème.
fonctions imbriquées JavaScript
Toutes les fonctions peuvent accéder à des variables globales.
En fait, en JavaScript, toutes les fonctions peuvent y accéder à l'étage de la portée.
JavaScript prend en charge les fonctions imbriquées. La fonction imbriquée peut accéder à des variables sur la couche de fonction.
Dans cet exemple, la fonction imbriquée plus () peut accéder à la variable compteur de fonction parent:
Exemples
var compteur = 0;
fonction plus () {compteur + = 1;}
PLUS ();
retour compteur;
}
Essayez »
Si nous pouvons accéder à la fonction ainsi que l' extérieur (), afin que nous puissions répondre à la détresse du compteur.
Nous devons également veiller à ce que compteur = 0 une seule fois.
Nous avons besoin de fermeture.
JavaScript fermetures
Rappelez-vous les appels de fonction se faire? Cette fonction va faire?
Exemples
var compteur = 0;
fonction de retour () {return compteur + = 1;}
}) ();
ajouter ();
ajouter ();
ajouter ();
3 // compteur
Essayez »
Des exemples d'analyses
Ajouter le mot variable indique la valeur de retour de la fonction elle - même appelle.
La fonction d'auto-appel est effectuée une seule fois. Réglage du compteur à zéro. Et revenir à l'expression de fonction.
ajouter une variable en fonction de l'utilisation. La grande partie est qu'il peut être consulté sur le champ d'application de la contre-couche de fonction.
Ceci est appelé fermetures JavaScript. Il dispose d'une variable privée de sorte que la fonction devient possible.
Contre que la portée de la protection d'une fonction anonyme ne peut être modifié par la méthode add.
Les fermetures sont accessibles sur une fonction portée variable à l'intérieur d'une fonction, même si la fonction de la couche a été fermé. |