哪哪都说闭包重要重要,虽然它确实很重要(废话),但它重要在哪里呢?
先说结论,我个人以为,闭包就重要在,它形成了一个单独的作用域。
那单独的作用域又有什么重要的呢?因为它可以隐藏变量,使变量对外不可见。就像这样:
这是闭包?这分明是打印未声明的变量啊。
你说的没错,但这也是闭包。
我个人对它的定义是这样的:闭包就是能够读取其它函数内部变量的函数。
那么闭包单独形成的作用域,有什么用呢?
一,可以读取函数内部的变量,并且外部其它方法无法读取。从而形成了事实上的私有方法(JS没有私有方法);
二,保持变量引用,使之不被GC清除。
代码就不多上了,主要是概念和思路方面要足够理解。闭包的例子网上到处都是,有心学习的同学百度吧。
至于注意点也无非就是,尽量不要使用变量,闭包变量用完要清除什么的;还有就是改变闭包变量的值要小心,因为它即是子函数的变量,同时也可以被父函数读取和修改。
这篇文章比较短,主要是复习一下JS的相关知识点。