首页 > 编程知识 正文

闭包用途,js闭包详解

时间:2023-05-05 15:18:59 阅读:48783 作者:2801

闭包的实现原理和作用1、闭包的概念:指可以访问另一个函数范围内变量的函数,一般一个函数包含另一个函数。

2、闭包的作用:访问函数内部变量、维护函数一直存在于环境中,不通过垃圾回收机制处理

在函数内部声明的变量是局部的,因此只能在函数内部访问。 但是,函数外部的变量在函数内部可见是范围链的特征。

子代可以向父母寻找变量,逐步寻找,直到找到为止

因此,您可以在函数内部创建另一个函数,以便内部函数可以看到外部函数的所有变量,从而可以访问其他变量。

3、闭包的好处:

便于调用上下文中声明的局部变量的逻辑紧密,可以在一个函数中构造另一个函数,避免了传播问题4、闭包的缺点:

使用闭包会导致内存泄漏,因为函数在运行后保留在内存中而不会被销毁,所以大量使用闭包会导致内存消耗增加

JS闭包在实际开发中的应用1。 在函数外,将函数内的变量.函数用作返回值(闭包作用:防止变量被环境污染) )。

2 .函数作为参数传递

3 .将函数与它操作的部分数据相关联。 通常,在使用只有一个方法的对象的位置可以使用闭包

4 .用闭包模拟私有方法

//这三个公共函数是共享相同环境的闭包。 得益于JavaScript词法范围,任何一个都可以访问privateCounter变量和changeBy函数。

var makeCounter=function () { var privateCounter=0; 功能更改器(val ) {隐私计数器=val; (; 返回{增量3360功能(} { changeby ) ) 1;decrement: function () changeby(-1 );value: function () { return privateCounter; }; }; var Counter1=makeCounter (; var Counter2=makeCounter (; Counter1.increment (; 控制台. log (counter1. value ) ); //1每当调用其中一个计数器时,通过改变此变量的值,这个闭包的词法环境就会发生变化。 但是,一个闭包内变量的变更不会影响另一个闭包内的变量。 控制台. log (counter2. value ) ); //0这样使用闭包提供了许多与面向对象编程相关的好处——,特别是数据隐藏和封装。

5 .循环中的闭包

怎样才能实现输出0-5?

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。