在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
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(); // 1 foo2(); // 1 foo2(); // 2 foo1(); // 2 因为 a 属于闭包的一部分,所以当闭包产生时,a 所处的环境状态会保持在内存中,不会随外层函数调用结束后清除,所以随着 foo1的使用,a 都会在内存中的值加 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()); // 0 foo1.add(); console.log(foo1.getA()); // 1 foo1.del(); console.log(foo1.getA()); // 0
通过闭包,保证了 A 只能被进行指定的 加一,减一操作。 3. 闭包的注意点不能滥用闭包,否则可能会因为内存占用过多而造成网页的性能问题,甚至可能造成内存泄漏。 总结
|
请发表评论