千家信息网

JavaScript中闭包有什么用

发表于:2024-09-30 作者:千家信息网编辑
千家信息网最后更新 2024年09月30日,这篇文章主要介绍JavaScript中闭包有什么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1. 什么是闭包闭包:函数本身和该函数声明时所处的环境状态的组合。也就是说函数不
千家信息网最后更新 2024年09月30日JavaScript中闭包有什么用

这篇文章主要介绍JavaScript中闭包有什么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

1. 什么是闭包

闭包:函数本身和该函数声明时所处的环境状态的组合。
也就是说函数不在其定义的环境中被调用,也能访问定义时所处环境的变量。

所以使用闭包,就可以将数据与操作该数据的函数相关联。

举个例子:

function foo() {        let a = 1;        return function() {                console.log(a);        }}let foo1 = foo();foo1() // 输出 1

这个就是一个闭包的例子,在 foo 中,由于 return 了一个函数,这个函数拥有涵盖 foo 内部作用域的闭包,也就是 a,使得 a 一直存活,不会在 foo 结束时被回收。

2. 闭包的作用

2.1) 记忆性

什么是闭包的记忆性

当闭包产生时,函数所处环境的状态会始终保持在内存中,不会在外层函数调用结束后,被垃圾回收机制回收。

举个例子:

function foo() {    let a = 0;    return function() {        a ++;        console.log(a);    }}let foo1 = foo();let foo2 = foo();foo1();  // 1foo2();  // 1foo2();  // 2foo1();  // 2

因为 a 属于闭包的一部分,所以当闭包产生时,a 所处的环境状态会保持在内存中,不会随外层函数调用结束后清除,所以随着 foo1的使用,a 都会在内存中的值加 1。
然后 foo1 和 foo2 产生的闭包是两个独立的闭包,它们互不影响。所以 foo2 第二次调用的时候,是在它自己第一次调用后结果上加 1.

2.2) 模拟私有变量

保证一个变量只能被进行指定操作。

举个例子

function foo() {        let A = 0;        return {            getA : function() {                return A;            },             add : function() {                A ++;            },            del : function() {                A --;            }        }}let foo1 = foo();console.log(foo1.getA()); // 0foo1.add();console.log(foo1.getA()); // 1foo1.del();console.log(foo1.getA()); // 0


通过闭包,保证了 A 只能被进行指定的 加一,减一操作。

3. 闭包的注意点

不能滥用闭包,否则可能会因为内存占用过多而造成网页的性能问题,甚至可能造成内存泄漏。

以上是"JavaScript中闭包有什么用"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!

0