闭包是一个很陌生的应用,在javascript中。至今在我的工作中从来没有看过,但是在看《javascript权威指南》的时候又一次看到闭包,渐渐开始对起了兴趣。不管有没有用先学会了再说。
我认为之所以在javascript中会产生闭包,最重要有两点:1.javascript是解释性语言,他的垃圾回收机制造成的。2.javascript是可以直接返回一个函数的。请看下面的代码:
function a(){ var b=0; function c(){ return b++; } return c; } var b=a(); console.log(b());//0 console.log(b());//1 console.log(b());//2 console.log(b());//3 console.log(b());//4 console.log(b());//5 console.log(b());//6 console.log(b());//7 console.log(b());//8 console.log(b());//9
按照正常的逻辑,函数a执行结束后,变量b就应该被回收,可是函数c引用到了变量b,所以变量b一直都没有被回收掉。
这就是一个闭包,至于他有什么用,我现在还不知道。可能以后写代码的时候尽可能要避免这种用法,因为一个变量如果不被回收是要占内存的,所以我们还是应该减少这样的使用。但是如果你是个js高手就要另当别论了。
这就是我的理解,有什么错误欢迎高人指点一二。