( ⊙o⊙ )!!!这个也太尼玛官方了撒,作为菜鸟的我根本无法理解它想表达个什么意思!但是作为一只好奇的菜鸟又很想知道“闭包”到底是个什么东西!所以最终找到了传说中的“度娘”帮忙!还算有了一点小小的理解!
个人见解:在函数体内定义另外的方法函数,而这个方法函数被函数以外的变量引用,这时就形成了闭包!
可能这样的理解也太抽象了,并不是那么简单易懂!实例吧:
复制代码 代码如下:
上面这一段代码就创建了一个闭包,因为当函数执行到var c=a();时,表面上看c指向的是a函数,而实际上c所指向的函数是b函数,所以再执行到c()的时候就会输出2;这样的话b函数就被a函数以外的变量引用了,根据个人见解,创建了一个闭包!
当我在小小的了解了什么时候闭包后也顺便看了哈闭包的用途,据说闭包的用途主要有两点:
1、可以读取函数内部的变量
2、让这些变量始终保持在内存中
复制代码 代码如下:
上面的代码中c指向的还是是b函数,c执行了两次,第一次输出1,第二次输出2,这证明了s一直被保存在内存中,并没有在a函数在被调用后自动清除,这是为什么呢,原因是因为b函数被赋给了一个全局变量,这导致了b函数一直在内存中,而b函数的执行又需要依赖着a函数,所以a也一直在内存中,不会在调用结束后被回收!(这样的理解貌似有点不专业)!表达完毕,请广大群众多多指教!
