天天看點

JavaScript閉包簡單應用

閉包定義

在JavaScript中,當一個内部函數被其外部函數之外的變量引用時,就形成了一個閉包。簡單說,閉包就是能夠讀取其他函數内部變量的函數。

閉包的作用:
1. 可以讀取函數内部的變量
2. 讓這些變量的值始終保持在記憶體中。 
           

閉包簡單應用

例一:
function a() { 
     var i = 0; 
    function b() {
      console.log(++i);
   } 
   return b;
}                        
var c = a();        //執行完var c=a()後,變量c指向了函數b,再執行c()後就會顯示i的值(為1)。
c();                //輸出1
           
例二:
(function() { 
var i = 0; 
   return function(){
          console.log(++i);
      }
})()();                    //輸出1
           
例三:
(function(i) { 
   return function(){
          console.log(++i);
      }
})(0)();                  //輸出1
           
例四:
for (var i = 0; i < 3; i++) {
    setTimeout((function(i) {             
        return function() {
            console.log(i);
        };
    })(i), 2000);
    console.log(i+10);
}                      //輸出 10 11 12 (隔兩秒後)0 1 2
           
例五:
for (var i = 0; i < 3; i++) {
    setTimeout((function(i) {
        return function() {
            console.log(i);
        };
    })(i)(), 2000);
    console.log(i+10);
}                     //立即輸出 0 10 1 11 2 12 ,(兩秒後運作程式結束)