宝哥软件园

javascript闭包函数分析及使用示例

编辑:宝哥软件园 来源:互联网 时间:2021-09-05

本文说明了javascript闭包的功能和用法。分享给大家参考,如下:

理解闭包

关闭真的很麻烦。之前我自己的理解有点错,所以今天就把文章修改一下,尽量让自己的理解更准确。

说白了,闭包指的是可以访问另一个函数范围内的变量的函数。创建闭包的一种常见方法是在一个函数中创建另一个函数并返回。

我们在这里举个例子。首先,我们在函数f1内部定义一个函数f2。

函数f1(){ var n=999;函数F2(){ alert(n);//999 }}f2可以访问f1的范围,反之亦然。现在我们想在f1中访问N,但是不能在外层访问N。我们做什么呢使用f2作为f1的返回值:

函数f1(){ var n=999;函数F2(){ alert(n);}返回F2;}var结果=f1();结果();//999这是结束。

其实也很简单,那么闭包有什么用呢?

闭包的使用

以前只知道闭包的概念,不知道它存在的价值和意义。直到在项目中遇到类似的问题,我才发现只有闭包才能解决问题。

使用闭包可以带来以下好处:

1.我想要一个变量在内存中停留很长时间。2.避免全局变量的污染。3.私人成员的存在

就像我们刚才说的,闭包可以读取函数内部的变量,因为函数的栈在闭包之后不会被释放,这意味着这些值总是被保存在内存中。这既是优点,也是缺点。

我们可以通过闭包实现一个计数器,而不用担心全局变量的污染:

函数f1(){ var n=999;nAdd=function(){ n=1 } function F2(){ alert(n);}返回F2;}var结果=f1();结果();//999 NadD();结果();//1000可以看到n已经存储在内存中,f1调用后没有自动清零。

让我们看看如何通过闭包在JavaScript中模拟私有成员:

var AAA=(function(){ var a=1;函数BBB(){ a;警报(a);}函数CCC(){ a;警报(a);}返回{b:bbb,//json结构c : CCC } }));AAA . b();//2aa . c();//3这样就可以提供指定的变量供外部访问。

通过闭包解决的问题

这是一个非常常见的问题,即在使用javascript处理循环时,索引I的值无法有效使用:

在这里,更改为以下格式并形成10个闭包来解决它:

关于JavaScript的更多信息,请访问本网站专题:《javascript面向对象入门教程》、《JavaScript中json操作技巧总结》、《JavaScript切换特效与技巧总结》、《JavaScript查找算法技巧总结》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》、《JavaScript数学运算用法总结》、0103010

希望本文对JavaScript编程有所帮助。

更多资讯
游戏推荐
更多+