이 기사에서 알 수 있는 것은 js에서 클로저의 정의가 무엇입니까? JS 클로저의 적용 시나리오에는 특정 참조 값이 있습니다. 도움이 필요한 친구가 이를 참조할 수 있기를 바랍니다.
클로저란 다른 함수의 범위에 있는 변수에 접근할 수 있는 함수를 말합니다.
function createFunc() { var name = "wheeler"; return function () { return name; } } var nameFunc = createFunc(); // nameFunc是一个闭包 var name = nameFunc(); console.log(name); // 解除对匿名函数的应用(以便释放内存) nameFunc=null;
내부 함수는 외부 함수의 변수 이름에 접근할 수 있습니다.
(클로저는 함수의 범위를 전달하므로) 포함하면 과도한 메모리 사용량이 발생할 수 있으므로 주의해서 클로저를 사용하세요)
// 块级作用域(通常称为私有作用域)的匿名函数的语法 (function(){ // 块级作用域 })();
Define 블록 수준 범위의 클로저
// 可以减少闭包占用的内存问题,因为没有指向匿名函数的引用。只要函数执行毕,就可以立即销毁其作用域链了 (function(){ function createFunc() { var name = "wheeler"; return function () { return name; } } var nameFunc = createFunc(); var name = nameFunc(); console.log(name); })();
클로저를 사용하여 프라이빗 메소드 시뮬레이션
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());
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"));
# 🎜 🎜 #
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());
function func(param) { return function() { console.log(param); } } var myFunc = func('wheeler'); setTimeout(myFunc, 1000);
위 내용은 js에서 클로저의 정의는 무엇입니까? JS 클로저의 애플리케이션 시나리오의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!