Cet article partagera quelques connaissances sur les fermetures en JavaScript. Il a une certaine valeur de référence, j'espère qu'il sera utile. à tout le monde. Aidé
Une fermeture est une combinaison d'une fonction et de l'environnement lexical dans lequel la fonction est déclarée. Lorsqu'une fonction interne est enregistrée à l'extérieur, une fermeture sera générée et la fermeture. entraînera la perte de la chaîne de portée d'origine, provoquant des fuites de mémoire, mais les fermetures sont également très utiles car elles peuvent associer certaines données à des opérations sur ces données.
Exemple :
function demo() { var name = '张三'; // name 是demo()创建的局部变量 function demo1() { //demo1()是demo()中的内部函数(闭包) console.log(name); // 使用父函数中声明的变量 } demo1(); }demo();
Résultat d'exécution
Créez une variable locale nommée name et un nom dans la fonction demo() Il est une fonction interne de demo1(). La fonction demo1() ne peut être utilisée que dans le corps de la fonction demo(). demo1 n'a pas de variables locales propres. Mais comme la fonction interne peut accéder aux variables de la fonction externe, demo1() peut accéder au nom de variable déclaré dans la fonction parent demo(). Mais si une variable portant le même nom name est définie dans demo1, le nom défini dans sa propre fonction sera utilisé. Cet exemple montre qu'une fonction imbriquée peut accéder aux variables déclarées dans sa portée externe.
Que se passera-t-il si le code ci-dessus est remplacé par celui-ci ?
function demo() { var name = '张三'; function demo1() { console.log(name); } return demo1; } var newDemo = demo(); newDemo();
Résultats d'exécution
Il ressort des résultats d'exécution que les résultats des deux morceaux de code sont les mêmes. demo1() est renvoyé par la fonction externe avant l'exécution pour former un package de fermeture, dans ce cas, newDemo() est une référence à la fonction demo1 créée lors de l'exécution de la démo, donc lorsque newDemo() est appelé, le nom de la variable name. peut toujours être transmis à console.log(name).
Exemple
function num(x) { return function(y) { return x + y; };} var num1= num(2); var num2 = num(3); console.log(num1(2));// 4 console.log(num2(2));// 5
Exécution des résultats
Définir une fonction num(x) en utilisant Elle reçoit un paramètre x et renvoie une nouvelle fonction. Cette nouvelle fonction reçoit également un paramètre y et renvoie la somme de x et y. En même temps, deux nouvelles valeurs num1 et num2 sont définies, toutes deux fermées et. les valeurs transmises sont respectivement 2.
Résumé : ce qui précède est le contenu partagé dans cet article. J'espère qu'il sera utile à tout le monde.
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!