JavaScript 闭包
2020-01-07 本文已影响0人
龚达耶
闭包 closure
引用了自由变量的函数(自由变量就是跨作用域的变量, 会一同存在即使离开也会)被外部访问
形成闭包条件(形成闭包的函数必须被外部变量引用(16),在函数中一定要访问外部函数的局部变量(10))
image.png按理来说如果使用var let const在函数当中,此时就变为局部变量,只有在内部才能访问到。
并且当退出函数时就会随函数调用的结束而消失。
var eat = function(){
var food = 'cake'
console.log(food)
}
eat(); // food
console.log(food) // Uncaught ReferenceError: food is not defined
而我们闭包的函数在执行var look = eat()时反悔了匿名函数的引用,所以food就一直在环境中不会被销毁
所以我们在这里就可以引出闭包的第一个好处就是延续局部变量的生命周期。
并且闭包可以帮我们把一些大函数的代码块独立出来。如果这些代码块不需要复用就可以用闭包封闭起来。