如何理解和应用闭包
发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,何为闭包函数内部又定义了一个函数,这个子函数就可以称为闭包。闭包的特点闭包的一个特点就是闭包内部可以引用外部函数的变量。原理要理解闭包的原理,最重要的是要理解JavaScript的作用域链机制。作用域
千家信息网最后更新 2026年10月31日如何理解和应用闭包
何为闭包
函数内部又定义了一个函数,这个子函数就可以称为闭包。
闭包的特点
闭包的一个特点就是闭包内部可以引用外部函数的变量。
原理
要理解闭包的原理,最重要的是要理解JavaScript的作用域链机制。
作用域
js中作用域分为两种,全局作用域和函数作用域(局部作用域),此外js遵循的是静态作用域规则。作用域链
由作用域形成的链条就称为作用域链,但这个作用域链存储的是指向各个活动对象的指针。下面我们看下作用域链的具体形成过程:全局作用域是一直存在的,函数作用域只有在执行到它的时候才会生成,当函数被定义时,函数的`scope`属性会存储该函数外部的作用域下的活动对象(指针),包括全局变量对象,所以可能是个指针列表。然后我们在调用函数时,首先会为它创建一个执行环境,然后创建作用域链,这个作用域链先是复制`scope`属性的值,新航道雅思培训然后把自己的活动对象推入作用域链的前端,这个活动对象由该函数作用域下的变量构成,这样函数的作用域链就形成了。
举个栗子:var g = 1;function out(){var out = "out";return function(){ var inner = "inner"; return out;}}示例图
示例图解释了为什么闭包拥有保存外部函数变量的特性
当函数执行完毕,作用域链就会被销毁,之前占用的内存也会被释放,但如果函数内部定义了一个子函数,这个时候子函数的`scope`属性就会存储着指向父函数活动对象的指针,活动对象由于仍被子函数引用,所以不会被销毁,父函数的变量仍旧没有被消除。变量out的值仍旧是"out"。
// 可通过如下代码验证var abc = out();alert(abc());
结果:
闭包的应用
闭包最常用的一个地方就是保留父函数的变量,这个在上面的例子中已经说明
闭包的另一个应用是模拟块级作用域和私有变量,这是应用函数拥有自己的作用域的特点,在不想成为公有变量的变量外报上一层匿名函数并且立即执行
(function(){// 这里是块级作用域})();
总结
闭包虽然看似简单,但它揭示了js作用域链的机制,而且闭包有很多应用场景,如果不看懂它只会越来越懵逼。
作用
函数
闭包
变量
对象
活动
应用
指针
全局
属性
特点
存储
个子
原理
就是
指向
时候
机制
重要
代码
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网科技
互联网科技工作委员会主任
蓝思科技飞鸽互联网
深圳互联网络科技有限公司
远拓互联网科技
互联网科技大会案例
华中科技有哪些互联网大佬
承德科技产业互联网发展
互联网对科技的发展
彤创互联网科技有限公司
互联网科技产业特征
洛阳共同富裕互联网科技有限公司
特约风豹互联网科技为什么扣费
互联网时代的科技公司
北京市互联网新科技
广州千川互联网科技有限公司
互联网科技收购价值
众联互联网络科技
青岛互联网科技园
株洲百竞科技的互联网营销顾问
互联网科技企业
广州大一互联网络科技有限公司
互联网电商科技
上海挚品互联网科技
互联网养老 桔豆科技
玖二柒互联网科技公司待遇
阿里巴巴算科技企业还是互联网
青岛科技大学互联网大赛研究生
国大互联网教育科技有限公司工作
区块链结合互联网科技