企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持知识库和私有化部署方案 广告
### 1.什么是闭包 1.当一个父函数存在内部变量和子函数的时候,子函数可以引用父函数的变量变量 2.如果父函数在执行的过程中return出了这个子函数,并且被使用了,那么子函数使用的内部变量不会随着父函数的执行结束而销毁,这就是一个闭包。 ``` 父函数 return 出一个子函数,子函数将父函数的变量 return 了出去,外部可以使用 ``` ### 2.简单的闭包: ```js function parent() { var a = 10 return function () { return a } } var out = parent() // 接收parent return 出的函数 var res = out() // 执行parent内部的函数,return 出了 a console.log('闭包:', res); // 10 ``` ### 3.闭包的特性 1.函数内嵌套函数 2.内部函数可以引用外层的参数和变量 3.参数和变量不会被垃圾回收机制回收 ```js // 闭包参与的变量不会被垃圾回收机制回收 function a() { let num = 1 return function () { num++ console.log(num); } } var c = a() c() // 2 c() // 3 ,函数a 内部的 num没有被垃圾回收机制回收 ``` ### 4.闭包问题 滥用闭包会造成内存泄漏,使得内存消耗过大,需要及时销毁相关变量