1.什么是闭包
闭包
答:在函数xxx里面有一个变量a和一个函数yyy,函数yyy能够获取到变量a,
函数yyy 与 函数xxx里面的变量a 就是一个闭包。
2.闭包的作用
想要了解什么是闭包,首先需要知道变量的作用域。就是JS中的全局作用域和函数作用域。
函数内部可以获取全局作用域的变量,反过来就不行。
同理,如果函数里面还有还有函数,那么里层函数能够获取外部函数作用域的变量,反过来就不行。
也就是说,父级作用域里面的变量对子级都是可见的,若子级想获取一个自身没有声明变量,就会逐级向上寻找,获取离自身最近的那个。而子级作用域的变量对父级就不见了。
综上所诉:
①,闭包能够让变量保存在内存中。因为内层函数对外层作用域变量的持续引用,所以在调用函数是能够保证变量保存在内存中不被回收。
②,能够让外层作用域访问到内层作用域的变量。
③,闭包能够隐藏(保护)一个变量。也就是说,你只能通过调用函数来操作变量,而不能通过其他途径去修改这个变量。