总结: 当外部函数返回时,内部函数还可以访问外部函数的属性和方法,叫做闭包。
(在JS中:只有函数内部的子函数才能访问到父函数内部定义的局部变量,父函数外部是访问不到该函数内部定义的局部变量的)
解法(使用闭包来解决):将一个函数作为返回值,赋值给1个外部变量,则可以实现:在父函数外部也能访问到父函数里面定义的局部变量。被访问的局部变量所在的函数叫做闭包(即父函数是闭包)!
作用域链:层一层的往外(上)去查找,如果外部父函数没有,就到全局里面去找!总之:就是就近原则,谁离我近,我就使用谁。
在javascript中,只有函数内部的子函数才能读取局部变量,所以闭包可以理解成“定义在一个函数内部的函数“。在本质上,闭包是将函数内部和函数外部连接起来的桥梁。”
ps:只要是代码,就至少有一个作用域!(局部作用域(每1个函数都会产生1个局部作用域)或全局作用域)