闭包在前端有非常重要的地位,可以说 hook 的灵魂就是闭包?也不知道这么说会不会很过分 哈哈哈
在 js 中,变量的作用域是属于函数的作用域,函数在执行以后作用域就会被清除,内存也会被回收。由于闭包是一个建立在函数内部的一个子函数,由于其可以访问上级作用域的原因,上级函数在执行完以后也不会被回收,这时候子函数也就是闭包,就有了可以访问上级作用域变量的权限,这样就使得上级函数在执行完以后作用域内的值不会被清除。
闭包是一个特殊的对象,它由两部分组成,一个是上下文 A ,还有一个是属于这个 A 的一个函数 B。当 B 在执行的时候访问了 A 里面的变量,那么闭包就产生了。这时候 A 这个执行上下文就不会被清除,内存也不会被收回。这样就得到了一个可以持久化保存变量的方法。
闭包是将函数内部和函数外部链接起来的一道桥梁。
react hook ,redux 中的 getStore(),函数节流,防抖,私有化变量。闭包玩不好就可能会出现内存泄漏。对心智要求比较高。