js閉包是什麼??舉例子簡單化理解

看了五花八門的文章,越解釋越模糊
其實閉包很簡單閉包:是指有權訪問另一個函數作用域中的變量的函數。
創建閉包的常用方式

//就是在一個函數內部創建另一個函數
//通常都是這種複雜的舉例
function createComparisonFunction(propertyName){
  return function(object1, object2){
    var value1 = object1[propertyName];
    var value2 = object2[propertyName];
    if (value1 < value2) {
      return -1;
    } else if (value1 > value2) {
      return 1;
    } else {
      return 0;
    }
  };
}
//在這個例子中,匿名函數function(object1, object2)是一個閉包,
能訪問createComparisonFunction作用域裏的所有變量

清晰的講:閉包就是一個函數,這個函數能夠訪問其他函數的作用域中的變量。

function outer(){
    var a = 123;
    var inner = function(){
        cosole.log(a)
    }
     retrun inner
      //inner就是一個閉包函數, 因爲它能夠訪問到outer函數的作用域
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章