js 闭包
2026/9/4 21:56:43 网站建设 项目流程

一、什么是闭包

1、闭包就是:

函数能够记住并访问它定义时所在作用域里的变量,即使这个函数已经在原作用域之外执行。

2、最基础的闭包例子

使用闭包可以使函数内的变量长期驻留在内存,当变量被执行操作改变值后,改变的变量值继续保留在内存进行逻辑操作

//闭包案例 function outer() { let count = 0 //在outer函数内return一个函数对(外层函数的变量)outer内的变量进行操作 return function inner() { count++ return count } } const fn = outer() console.log(fn()) // 1 console.log(fn()) // 2 console.log(fn()) // 3 fn=null//手动清空闭包,防止内存泄漏 //非闭包函数 function outer() { let count = 0 count++ return count } const fn = outer() //打印出的结果全是1,因为非闭包普通函数执行完一次后,这个函数里面的变量就会释放掉,下一次再执行这个函数又重新对里面的变量count赋值为0然后自增1,故每次执行函数输出的都是1 console.log(fn()) // 1 console.log(fn()) // 1 console.log(fn()) // 1

3、闭包怎么使用:

(1)在函数里面再嵌套一个函数(匿名函数也可以)

(2)嵌套的函数必须使用到外层函数的变量

(3)当我们把外层函数给执行了也就代表创建了闭包

注意:如果嵌套函数没有使用到外层变量那么就不会形成闭包的

二、闭包的作用

(1)避免变量全局污染、使数据私有化,外部无法修改内部数据、可以让外部可以使用内部的私有数据(同时也是函数的作用,正常的函数没办法实现数据的驻留,因为正常函数会把这些数据给释放掉)

(2)闭包核心作用:使变量可以驻留在内存,不被回收

三、闭包缺点

(1)因为数据长时间驻留在内存不被回收,处理不当可能造成内存泄漏

四、闭包如何防止内存泄漏

(1)使用完了就让闭包等于null

(2)有些内存泄漏是允许存在的可以不用清空

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询