面试题4:Js中什么是闭包?闭包的作用?闭包的应用?闭包会造成的问题?

面试官:什么是闭包?闭包的作用?闭包的应用?⭐⭐⭐⭐⭐

答:

函数执行,形成私有的执行上下文,使内部私有变量不受外界干扰,起到保护保存的作用

闭包(closure)就是能够读取其他函数内部变量的函数。在javascript中,只有函数内部的子函数才能读取局部变量,所以闭包可以理解成 “定义在一个函数内部的函数”。在本质上,闭包是将函数内部和函数外部连接起来的桥梁。(闭包的最典型的应用是实现回调函数(callback) )。

作用:

        保护
                避免命名冲突
        保存
                解决循环绑定引发的索引问题
变量不会销毁
可以使用函数内部的变量,使变量不会被垃圾回收机制回收

应用:

设计模式中的单例模式
for循环中的保留i的操作
防抖和节流
函数柯里化

缺点:

会出现内存泄漏的问题

 1.常驻内存,会增大内存使用量,使用不当很容易造成内存泄露。
 2.还有有一个非常严重的问题,那就是内存浪费问题,这个内存浪费不仅仅因为它常驻内存,更重要的是,对闭包的使用不当会造成无效内存的产生。

优点:

       1.保护函数内的变量安全
    2.在内存中维持一个变量(用的太多就变成了缺点,占内存) ;
    3. 逻辑连续,当闭包作为另一个函数调用的参数时,避免你脱离当前逻辑而单独编写额外逻辑。
    4. 方便调用上下文的局部变量。
    5. 加强封装性,可以达到对变量的保护作用。

你可能感兴趣的:(面试,javascript,javascript)