前端 闭包函数

编程入门 行业动态 更新时间:2024-10-28 04:27:30

前端 闭包<a href=https://www.elefans.com/category/jswz/34/1771370.html style=函数"/>

前端 闭包函数

闭包

闭包就是能够读取函数内部的一个变量的函数。

应用场景:

当我们在封装一个通用模块时,在模块中定义一个变量,不想让这个变量污染全局变量并且不会被内存释放的时候,就可以使用闭包;

创建闭包方式:

函数A里面创建了另一个函数B,并返回这个B函数,在B里面修改了A函数中定义的变量,这个变量会一直保存在这个闭包形成的环境中,不会被垃圾回收处理。

function A(){var n=999;return function B(){alert(n); // 999}
}

变量作用域

变量作用域:全局(函数外部)和局部变量,

局部变量:var声明变量只在函数作用域中有效【函数中声明的变量作用域】

没有var声明就会变成全局变量;有var就是局部变量;var具有变量提升的功能

函数可以用来创建函数作用域,函数就像一层半透明玻璃,里面可以看到外面,外面看不到里面的变量


函数的生存周期

全局变量:生存周期是永久的,除非我们主动销毁这个全局变量

var声明的局部变量:当退出函数时,他会随着调用函数的结束而随之销毁

闭包函数:当退出函数后,局部变量不会消失,在某个函数中存在


闭包的作用:

封装变量;延续局部变量的寿命

封装变量因为使用闭包可以访问到函数内部变量

延续局部变量寿命是因为不会随函数调用结束而被垃圾回收掉


闭包与内存管理

闭包会造成内存泄露,所以要尽量减少闭包的使用,其实这种说有误的。因为使用闭包是开发者自己定义的,在不用的时候将这个变量置为null就不占内存了;

其次循环应用的问题它会造成内存泄漏,这个主要还是因为浏览器本省的原因,循环引用计数造成的,只要将变量置为null也就没有这个问题了

使用闭包注意:

由于使用闭包使得函数内部的变量保存在内存中,内存消耗很大,网页性能不好,

避免滥用闭包;【解决方法:在退出函数前,将不适用的局部变量全部删除】

把父函数当作对象使用,把闭包当作它的公用方法,把内部变量当作它的私有属性

不要随便改变父函数内部变量的值

闭包会在父函数外面,改变父函数内部的变量


更多推荐

前端 闭包函数

本文发布于:2023-07-28 18:02:07,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1269886.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:函数

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!