js闭包那点事儿

Author Avatar
秦晓飞 4月 01, 2017

Javascript闭包

js闭包小结

学完js高级感觉应该写点东西总结一下,今天就来把js闭包这点事儿发表一下自己微小的见解!
在我看来js闭包其实就是相当于一个箱子(函数),箱子里的东西需要拿出来用,需要通过一定的方法才能拿出来,而闭包要做的就是怎么把这个箱子(函数)里的东西字拿出来!

闭包
一个具有封闭的对外不公开的包裹的结构或者空间,也可以理解为函数作用域!

闭包是用来干什么的
因为js是词法作用域,上级作用域无法访问下级作用域中的变量,例如:

1
2
3
function foo(){
var num=123;
}

此时函数外部想要修改num的值 ,就需要用到闭包,如下:

1
2
3
4
5
6
7
8
9
function foo(){
var num=123;
return function(a){
num=a;
}
}
var func=foo();
//此时func=function(a){...}
因此,给func传参即可改变num 的值

上面的例子就是闭包的基本模式,其实就是把这个函数的返回值设置为一个函数,调用外部函数时就可以接收到返回值(内部函数),通过内部函数可以访问外部函数中的变量或者对象!

闭包的作用

创建一个私有的空间保护数据,外部想要访问空间里的数据只能通过内部函数(自身返回的函数)提供的属性或者方法才能访问到!这样可以使数据变的更加安全!