什么叫闭包JavaScript
1、借用百度百科关于闭包的定义:闭包就是能够读取其他函数内部变量的函数。由于在javascript中,只有函数内部的子函数才能读取局部变量,所以闭包可以理解成“定义在一个函数内部的函数“。在本质上,闭包是将函数内部和函数外部连接起来的桥梁

3、想了下,上面说的是不能直接将n返回,那我将它间接返回应该是可以的啥。比如我在这个函数里面在定义一个函数subNv,然后跛星笸浊让nv直接返回subNv这个函数,而subNv这个函数由于是定义在函数nv里面,所以可以获取到局部变量n,这样让subNv返回可以了啥。代码如下:function nv(){var n=10;function subNv(){return n;}return subNv;}var subNv=nv();subNv()此时看下运行效果:

5、这时我们在去看看关于间糈尢各闭包的定义:1. 闭包就是能够读取其他函数内部变量的函数。2. 由于在javascript中,只有函数内部的子函数才能读取局部变量,所以同谒缡肪闭包可以理解成“定义在一个函数内部的函数“。3. 在本质上,闭包是将函数内部和函数外部连接起来的桥梁第一遍没看懂?再看第二遍!第二不行?在来第三遍!现在看懂了吧。没错,你想的没错!1. subNv能读取nv中的变量,所以subNv就是闭包。2. 这个闭包subNv是定义在nv里面的一个函数,3.闭包subNv作为一个桥梁将函数nv和函数外部联系起来了,是的函数外部也能获取到函数nv里面定义的变量。

7、类比:如果你学过面向对象的语言,比如javas,c++,c#等,那么其实你可以发现,如果把某个函数当成一个类的话,定义在其中的局部变量很像是类的私有属性,而闭包则像其专用于获局部变量的私有方法(只是从功能方式上简单的类比下,本质上他们是不一样的)
