前言:闭包其实就是一个函数里面的私有方法,我们在函数外部无法调用,这个就叫闭包。理解起来其实也不难。这个其实也跟js的作用域有很大关系的,这里的闭包也用了作用域的特性。js的作用域分两种,全局和局部,基于我们所熟悉的作用域的知识,我们知道在js作用域环境中访问变量的权利是由内向外的,内部作用域可以获得当前作用域下的变量并且可以获得当前包含当前作用域的外层作用域下的变量,反之则不能,也就是说在外层作用域下无法获取内层作用域下的变量,同样在不同的函数作用域中也是不能相互访问彼此变量的,那么我们想在一个函数内部也有限权访问另一个函数内部的变量该怎么办呢?闭包就是用来解决这一需求的,闭包的本质就是在一个函数内部创建另一个函数,让我在函数的外部无法调用函数的那不函数。
1.上面是文字的解释,如果看来还有一点小蒙蔽的话,那么看代码理解吧。
(function (){
var person=function (x,y){
return x+y;
}
})()
2.在这个代码当中,如果你想要调用person函数,那么是不是的在外部函数的内部才可以调用,这个时候这个就会有js作用域的作用了,person函数的作用域是在大函数里面的局部作用域,而我们只能调用全局作用域。看下面代码
var huaye
(function (){
var person=function (x,y){
return x+y;
}
huaye=person;
})()
在这个时候你就可以直接调用花爷了。花爷是全局作用域,我们是可以调用的。而我们在大函数内部定义的关键调用是huaye=person,那么就把这个函数导出了,这个函数调用了时,也不会影响函数调用大函数的其他函数。
3.今天就到这。其实我写的东西全部是教思路。大家在逆向过程知识固然重要,但是更重要是思路,思路跟上了那么就快了。
4.大家对我写的文章感兴趣,那么就关注我的微信公众号吧,也有很多关于js逆向的知识哦.。欢迎大家伙关注哦。