1. 程式人生 > >閉包以及其作用

閉包以及其作用

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(){
  var
num = 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;

閉包以及其作用