了解JS中的闭包,有何优缺点
1 闭包特性
1.函数嵌套函数
2.函数内部可以引用函数外部的参数与变量
3.参数和变量不会被垃圾回收机制回收
2 使用方式
作为函数返回值
function f1(){
    return function(){
        console.log(1)
    }
}
f2 = f1()
f2()小案例,如果想要如下代码每隔1秒打印的结果是0-4,该如何进行改动
function f1(){
    for(var i = 0; i<5; i++){
        setTimeout(function(){
            console.log(i)
        },i*1000)
    }
}第一种,可以将var修改为let,因为let具备块级作用域
第二种,使用匿名自执行函数
function f1(){
    for(var i = 0; i<5; i++){
        (function(i){
            setTimeout(function(){
                console.log(i)
            },i*1000)
        })(i)         
    }
}
f1()3 优缺点
1.优点
可以在函数内部引用函数外部的参数与变量,在内存中维持一个变量,可以做缓存。
保护函数变量的安全,实现封装,防止变量跑到外层作用域中,发生命名冲突。
匿名自执行函数,可以减小内存消耗。
2.缺点
内存消耗,闭包使用不当容易造成内存泄漏。
性能问题,使用闭包时,会涉及到跨作用域访问,每次访问都会导致性能损失。
- 本文作者: étoile
 
- 版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!