JS:闭包2
4. 回调函数,利用函数复用的功能,制作复用工具,参数返回值
如何回答有关闭包的问题?
1、闭包的描述
拥有作用域的代码块是一个闭包;
是能够读取其他函数内部的局部变量的函数;
2、闭包的使用场景
1、将函数作为返回值
2、
3、闭包的看法
4、在某个项目中
优点 :技术难点用闭包解决;
1、函数内部的变量 需要被外部变量使用 但是语法决定了外部变量不能被使用 可以利用闭包解决
2、一些临时数据 比如for 循环的i值 希望未来使用,希望延时业务中使用,可以使用闭包吧临时数据保存到局部作用域中 ;
3、防止变量污染 可以用闭包把一些业务变量放在局部作用域中。
缺点:
1、闭包使用不当就有致命的问题,例如内存泄漏,
2、内训管理机制:垃圾回收机制、引用技术机制,底层浏览器的代码实现的功能;
3、内存泄露 :如浏览器运行网页 就会执行js代码 引用数据会在内存中占用内存空间;如果有一个对象创建了 ,而且占用了内存 ,却没什么业务使用。
闭包会导致内存泄露:
function fn(){
var obj = {age:20}
}
调用时 内存中有一个对象
调用完毕 内部的变量没有谁能再访问 对象obj释放
内存泄漏解决方案:
1、尽量避开使用闭包或者手动把引用置空
2、在可能存在泄露的地方把标识符引用为null