您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

Javascript闭包的代码示例

2025/4/25 7:17:32发布35次查看
本篇文章给大家带来的内容是关于javascript闭包的代码示例,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
闭包
当内部函数被保存到外部时,将会生成闭包。闭包会导致原有作用域链不释放,造成内存泄露
//内部的函数被返回到外部,必然形成闭包function a(){function b(){var b = 234;console.log(a);}var a = 123;return b;}var demo = a();demo(); // -->123
function test1(){var num = 100;function test2(){num ++;console.log(num);}return test2;}var demo1 = test1();demo1(); //101demo1(); //102
//function test(){ var arr = []; for(var i = 0; i < 10; i++){//当i = 10的时候循环停止 arr[i] = function(){ //arr的每一位都是一个函数 console.log(i);//虽然函数已经定义,但未执行 } } return arr; } var myarr = test(); for(var i = 0; i < myarr.length; i++ ){ myarr[i](); }
最后函数执行的时候会调用test的ao中的i
ao{i = 10;}
解决方案:立即执行函数
function test() { var arr = []; for(var i = 0; i < 10; i++) { (function(j) { arr[j] = function() { console.log(j); } }(i)) } return arr; } var myarr = test(); for(var i = 0; i < myarr.length; i++) { myarr[i](); }
1.实现公有变量
eg:函数累加器
function add(){var count = 0;function demo(){count ++ ;console.log(count);}return demo;}var counter = add();counter();
2.可以做缓存
eg:eater
function test2(){var food = 'apple';var obj = {eatfood : function(){if(food != ""){console.log("i am eatting " + food);food = '';}else{console.log("there is nothing! empty!");}},pushfood : function(myfood){food = myfood;}}return obj;}var obj = test2();obj.eatfood();obj.eatfood();obj.pushfood('banana');obj.eatfood();
3.可以实现封装,属性私有化。
eg: person();
以上就是javascript闭包的代码示例的详细内容。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product