JS闭包问题?

来源:互联网 发布:sql字符串函数有哪些 编辑:程序博客网 时间:2024/06/11 06:45

在面试的时候总是会问JS闭包,总是因为这个问题,郁闷好久,于是百度了很久,终于有了一些了解,不扯了,上代码了:

闭包:关于闭包这个月在园子里有几篇不错的分享了,在这我也从最实际的地方出发,说说我的理解。

    1.闭包最常用的方式就是返回一个内联函数(何为内联函数?就是在函数内部声明的函数);

    2.在JavaScript中有作用域和执行环境的问题,在函数内部的变量在函数外部是无法访问的,在函数内部却可以得到全局变量。由于种种原因,我们有时候需要得到函数内部的变量,可是用常规方法是得不到的,这时我们就可以创建一个闭包,用来在外部访问这个变量。

    3.闭包的用途 主要就是上一点提到的读取函数内部变量,还有一个作用就是可以使这些变量一直保存在内存中。

    4.使用闭包要注意,由于变量被保存在内存中,所以会对内存造成消耗,所以不能滥用闭包。解决方法是 在退出函数之前,将不使用的局部变量全部删除。

    最后还是上一套闭包的代码吧,这样更直观。

 1   function f(){ 2     var n = 999; 3     function f1(){ 4       alert(n+=1); 5     } 6     return f1; 7   } 8   var result = f(); 9   result(); // 100010   result(); // 100111   result(); // 1002

0 0
原创粉丝点击