zl程序教程

您现在的位置是:首页 >  其他

当前栏目

闭包的玩法

2023-02-25 18:27:41 时间

闭包概念

闭包是指有权访问另一个函数作用域中的变量的函数 ——《JavaScript高级程序设计》

由于js的垃圾回收机制,函数执行完,函数内部的变量一律会被销毁。但是有某些特定的需求又需要我们保存这种变量。那么要用到闭包了

产生闭包的方法

由于函数执行完,内部变量会被销毁,无法直接从外部访问。所以在函数内部return一个函数,被return的函数里面再return需要被保存的变量。 这样js就会认为这个变量还在被使用,无法被销毁。像是卡了一个bug一样。

闭包小案例

请使用闭包定义一个函数,实现每次调用这个函数,返回值都比上次+1

1   const getCount = () => {
2            let count = 0
3   //return一个函数,函数里再return函数内部的变量,产生闭包
4            return () => {
5                return count++
6            }
7        }
8
9        const newCount = getCount()
10
11        console.log(newCount());//0
12        console.log(newCount());//1
13        console.log(newCount());//2
14

闭包优点:

  • 能够访问函数的局部作用域(阻止内部变量被回收)
  • 私有化变量
  • 模拟块级作用域

闭包缺点:

  • 闭包比普通函数更消耗内存,过多使用容易造成内存泄漏