标签:闭包 总结 局部变量 inner2 函数 outerFn inner1 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直接调用,局部变量创建后即销毁,值不保留
标签:闭包,总结,局部变量,inner2,函数,outerFn,inner1,JavaScript,内部 来源: https://www.cnblogs.com/bclshuai/p/12880613.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。