JavaScript闭包总结

自己开发了一个股票智能分析软件,功能很强大,需要的点击下面的链接获取:

https://www.cnblogs.com/bclshuai/p/11380657.html

JavaScript闭包

(1)   定义

闭包是指将内部局部变量封装在函数内部,同时又能通过外部函数调用改变内部变量的值,并且保证局部变量不销毁,能够在内存中长期存在,进行累加等操作。避免使用全局变量造成哪里都可以修改的缺点,同时引入内存泄露的缺陷。

(2)   实现

定义外部函数,函数内部定义一个变量和内部函数,内部函数中修改变量的值,内部函数的结果作为外部函数的返回值。

function outerFn(){//外部函数名称

var i = 0;//内部局部变量

  function innnerFn(){//内部函数

      i++;//变量修改累加

      console.log(i);

  }

  return innnerFn;//内部函数作为返回

}

var inner1 = outerFn();//定义全局变量保存外部函数,创建函数对象,函数对象生命周期和全局变量inner1相同,函数对象内部的局部变量与全局变量inner1的生命周期也相同。知道inner1销毁,内部的局部变量才会销毁。

var inner2 = outerFn();//重新创建函数对象,与inner1内存空间不同。

inner1();//1

inner2();//1 inner1和inner2内存独立,互不干扰

inner1();//2

inner2(); //2 

outerFn()();//1直接调用,局部变量创建后即销毁,值不保留

outerFn()();//1直接调用,局部变量创建后即销毁,值不保留

posted @   一字千金  阅读(163)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示