闭包和js的回收机制
2020-05-11 本文已影响0人
练习时长2年半的个人练习生
-
闭包的概念
子函数使用父函数变量的行为就是闭包。
-
闭包的作用
1.可以访问内部作用域的变量(在外部调用子函数,因为子函数中保持着对他的父函数变量引用。所以可以在外部访问到内部作用域的变量。)- 可以让这些变量的值一直存在于内存中
-
闭包的缺点
因为闭包会让引用父作用域的变量一直存在,所以可能导致内存泄漏 -
闭包的应用场景
保护函数内的变量安全:如迭代器、生成器。
在内存中维持变量:如果缓存数据、柯里化。
function parent(){
let lastName = '赵';
return function son(){
return lastName;
}
}
//这就是一个闭包。 子函数使用了父函数的变量,使这个变量一直保持在内存中。
强制回收内存 变量=null即可实现
闭包保持变量在内存的实例
function calc(){
let res = 0;
return function(){
return ++res
}
}
let fn = calc();
console.log(fn()) //1
console.log(fn())//2
console.log(fn())//3
console.log(fn())//4
柯里化实例