js闭包
简述
闭包(closure)是一个函数以及其捆绑的周边环境状态的引用的组合。换而言之,闭包让开发者可以从内部函数访问外部函数的作用域。在 JavaScript 中,闭包会随着函数的创建而被同时创建。
闭包指有权访问另一个函数作用域中变量的函数——JS高级程序设计
闭包的例子
变量num的作用域是fn,我们可以在fun函数内访问fn作用域内的变量,这里的fun就是闭包函数
function fn() { let num = 0; function fun() { console.log(num); } fun(); } fn();
再看下面这个例子,fn函数内的返回值是fun,就是返回的是fun函数的"定义",我们可以调用由fn()返回的fun函数,实现了在外部作用域访问fn作用域中的变量num的效果
function fn() { let num = 0; function fun() { console.log(num); } return fun; } let f = fn(); f();//f()其实和fn()()等价
这里例子也可以写成
function fn() { let num = 0; return fun() { console.log(num); } } let f = fn(); f();
闭包的作用
闭包的最大作用就是延申了变量的作用范围,我们可以在函数外部访问函数内部作用域的变量
References
https://zhuanlan.zhihu.com/p/158430253
https://www.bilibili.com/video/BV1DY41177dM?p=67&vd_source=a58d0aa3591cdd200c549746ed2ffa7a
一点一点积累,一点一点蜕变!