學習JavaScript的閉包

從外部訪問函數局部變量

變量有局部變量和全局變量。對於函數的局部變量,在函數內部可以訪問,在函數外部無法訪問。對於全局變量,在函數內部和外部都可以訪問。

閉包是什麼?

Javascript允許在函數中定義內部函數,將內部函數返回,這時候會產生閉包。
閉包中含有一種特殊的局部變量,在函數結束返回後仍然存在。
閉包中的局部變量是引用而不是拷貝。

返回內部函數

function makeFunc() {
  var name = "Hello";
  function displayName() {  //閉包
    alert(name);
  }
  return displayName;
}

var myFunc = makeFunc();
myFunc();

內部匿名函數

function f1(){
    var n=0;
    nAdd = function(){ //閉包
           n+=1;
           alert(n);
       }
    return;
  }


  var result=f1();
  nAdd();
   nAdd();

組合例子

function f1(){
    var n=0;
    nAdd = function(){ //閉包
           n+=1;
           alert(n);
       }
      var g = function(){ //內部變量,無法在外部調用
           alert("g");
           n+=1;
           alert(n);
      }
    function f2(){  //閉包
      alert(n);
    }
       //g();
    return f2;
  }


  var result=f1();
   g();
  result();
  nAdd();
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章