Ce que cet article vous apporte, c'est quelle est la définition de la fermeture en js ? Les scénarios d'application de la fermeture js ont une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer, j'espère que cela vous sera utile.
Une fermeture est une fonction qui a accès à une variable dans la portée d'une autre fonction.
function createFunc() { var name = "wheeler"; return function () { return name; } } var nameFunc = createFunc(); // nameFunc是一个闭包 var name = nameFunc(); console.log(name); // 解除对匿名函数的应用(以便释放内存) nameFunc=null;
La fonction interne peut accéder au nom de variable de la fonction externe. La portée de la fonction interne contient la portée de la fonction externe
(Puisque la fermeture portera la portée de la fonction qui. le contient, cela peut provoquer une consommation trop importante de mémoire, alors utilisez les fermetures avec prudence)
// 块级作用域(通常称为私有作用域)的匿名函数的语法 (function(){ // 块级作用域 })();
Définir des fermetures au niveau du bloc Scénarios d'application de fermetures dans le domaine
// 可以减少闭包占用的内存问题,因为没有指向匿名函数的引用。只要函数执行毕,就可以立即销毁其作用域链了 (function(){ function createFunc() { var name = "wheeler"; return function () { return name; } } var nameFunc = createFunc(); var name = nameFunc(); console.log(name); })();
Utiliser des fermetures pour simuler des méthodes privées
var returnNum = (function () { var num = 0; function changeNum(value) { num = value; } return { add: function () { changeNum(10); }, delete: function () { changeNum(-10); }, getNum: function () { return num; } } })(); // 闭包 console.log(returnNum.getNum()); returnNum.add(); console.log(returnNum.getNum()); returnNum.delete(); console.log(returnNum.getNum());
Cache
var CacheCount = (function () { var cache = {}; return { getCache: function (key) { if (key in cache) {// 如果结果在缓存中 return cache[key];// 直接返回缓存中的对象 } var newValue = getNewValue(key); // 外部方法,获取缓存 cache[key] = newValue;// 更新缓存 return newValue; } }; })(); console.log(CacheCount.getCache("key1"));
Package
var person = function(){ var name = "default";//变量作用域为函数内部,外部无法访问 return { getName : function(){ return name; }, setName : function(newName){ name = newName; } } }(); console.log(person.name);// undefined console.log(person.getName()); person.setName("wheeler"); console.log(person.getName());
setTimeout
function func(param) { return function() { console.log(param); } } var myFunc = func('wheeler'); setTimeout(myFunc, 1000);
Protégez les variables dans les fonctions.
Maintient une variable en mémoire.
Recommandations associées :
Qu'est-ce que la fermeture js ? Comprendre la fermeture js (avec code)
Qu'est-ce que la fermeture js ? Comprendre la fermeture js
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!