什么是闭包,闭包有什么应用特性.
闭包就是能够读取其他函数内部变量的函数。在本质上,闭包就是将函数内部和函数外部连接起来的一座桥梁。
通俗点讲: 闭包就是你的女人红杏出墙, 外人可以很轻易的通过它了解你家里的情况, 甚至指示她改变你的家, 只要你还没离婚, 你家就会被一直拖着, 这个状态很容易出问题. 但外人用着却很方便.....
在js中,函数内部可直接访问外部变量, 外部却无法访问到内部变量, 在这我们实现的方法就是闭包了,
如下代码:
以上代码中, 函数g()就被包在函数f()内部, 这时f()内部的所有的局部变量,对g()都是可见的, 但是反之就不行.
这就是javascript特有的"链式作用域" 结构. 子对象会一级一级的向上寻找所有的父对象的变量, 所以父对象所有的变量对子对象都是可见的, 反之就不成立.
我们需要f()外部读取内部的变量a, 直接是无法读取的, 但是g()可以读取到f()中的a, 那么我们就把g()作为返回值. 这样我们就可以在f()外部读取他的内部变量了.
闭包的应用特性:1.局部变量 : 在函数中定义有共享意义的局部变量. ( 注: 定义成全局变量会对外部造成污染 ).
2.内嵌函数: 在函数声明中有内嵌函数, 内嵌函数对函数中的局部变量进行访问.
3.外部使用: 函数向外返回此内嵌函数, 外部可以通过此内嵌函数持有并访问声明在函数内部的局部变量, 而此变量外部是通过其他途径无法访问的.