閉包以及其作用
阿新 • • 發佈:2017-12-08
dem ole 化工 作用域鏈 strong 例子 適合 var 工作
function a(){ var num = 0; function b(){ num++; console.log(num) } return b; } var demo = a(); demo();//打印第一次1 demo();//打印第二次2 a執行b定義,並被保存下來 閉包通俗講就是:內部函數通過return保存在外部了, 閉包會導致原有作用域鏈不釋放,造成內存泄漏。 閉包的作用: 1.實現公有變量; 2.可以做緩存(存儲機制); 3.可以實現封裝,屬性私有化; 4.模塊化開發,防止汙染全局變量; function test(){ varnum = 10; function a(){ num++; console.log(num); //11 } function b(){ num--; console.log(num); //10 } return [a,b]; } var myArr = test(); myArr[0](); myArr[1](); 緩存例子效果; function a(){ var list = ""; var obj = { b:function(){ console.log(111) list= ""; }, push:function(){ list = myList; } } return obj; } var demo = a(); demo.push("bob"); demo.a(); 立即執行函數:執行後被釋放;適合初始化工作。 (function(){}());//w3c推薦第一種; (function(){})(); 傳參是一樣的,也一樣有返回值; 如: var num =(function(a,b,c){ var d = a+b+c return d; }(1,2,3)) num= 6;
閉包以及其作用