剖析js中的闭包,理解闭包到底是个什么,有怎样的作用
Posted 考拉的墨尔本
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剖析js中的闭包,理解闭包到底是个什么,有怎样的作用相关的知识,希望对你有一定的参考价值。
关于js中的闭包,网上的资料满天飞。虽然每个人对于闭包都有自己独特的见解,但是总体上来说对于闭包的实际理解是一致的,只是描述的方式有所不同。那么以怎样的方式可以让读者更加简单清楚理解闭包呢?这里本人做了一些工作,以一种简单的方式将闭包描述出来。
1.闭包的概念
闭包就是定义在函数内部并且能够读取其他函数局部变量的函数。我们结合代码可以更好的理解 <script type="text/javascript">
function fun1()
var str="外部函数变量";
function fun2()
console.log(str);
return fun2;//在fun1函数内部返回
var result=fun1();
result();
</script>
以上的代码片段就是一种闭包,我们在外部函数fun1()中定义了一个内部函数fun2(),并且在fun2()的内部使用了fun1()的变量,最后我们又把内部函数fun2()函数返回。结合我们对闭包的定义: 外部函数------------------------------------------------->fun1() 外部函数变量------------------------------------------->str 内部函数------------------------------------------------->fun2()
2.闭包的常见写法
<script type="text/javascript">
function fun1()
var str="外部函数变量";
return function()
console.log(str);
fun1()();
使用匿名函数作为内部函数返回是最常见的实现闭包的方式,这种方式和上面的方式相比更加的简单,更加容易理解。
3.闭包的作用
1.通过闭包我们可以在函数外部读取函数内部的变量,简单来说闭包就是将函数的外部和内部进行了连接。 2.使用闭包之后,外部函数的变量会始终存在与内存中,不会在外部函数调用后被GC回收。4.使用闭包应该注意的问题
1.因为闭包会使得函数的变量始终存在与内存中,所以会对内存造成很大的消耗,会造成网页的性能问题。并且在IE中还会造成内存泄漏的问题。 2.因为闭包会使得外部函数的变量始终曝露在内存中,应该注意尽量不要改变外部函数的变量值。以上是关于剖析js中的闭包,理解闭包到底是个什么,有怎样的作用的主要内容,如果未能解决你的问题,请参考以下文章